没有属性的C#json序列化和反序列化
本文关键字:序列化 反序列化 C#json 属性 | 更新日期: 2023-09-27 18:27:06
是否可以在不为每个所需属性指定DataMember属性的情况下序列化和反序列化类及其继承?
是。您可以使用.NET JavaScriptSerializer
类,也可以使用Json.NET.等第三方库
下面是一个使用JavaScriptSerializer:的例子
using System;
using System.Web.Script.Serialization;
class Program
{
static void Main(string[] args)
{
DerivedClass dc = new DerivedClass
{
Id = 1,
Name = "foo",
Size = 10.5
};
JavaScriptSerializer ser = new JavaScriptSerializer();
string json = ser.Serialize(dc);
Console.WriteLine(json);
Console.WriteLine();
DerivedClass dc2 = ser.Deserialize<DerivedClass>(json);
Console.WriteLine("Id: " + dc2.Id);
Console.WriteLine("Name: " + dc2.Name);
Console.WriteLine("Size: " + dc2.Size);
}
}
class BaseClass
{
public int Id { get; set; }
public string Name { get; set; }
}
class DerivedClass : BaseClass
{
public double Size { get; set; }
}
输出:
{"Size":10.5,"Id":1,"Name":"foo"}
Id: 1
Name: foo
Size: 10.5
是的,这是可能的,我将通过编写asp.net代码给您举一个例子::
c#代码:
public class a{
public prop int id
}
public class b: public a{
public prop string name
}
asp.net代码:
@model b // for taking b as model in this view
<form action="action" method="post" id="myForm">
enter id : @Html.TextboxFor(m=>m.id)
enter name : @Html.TextboxFor(m=>m.name)
<input type="submit" id="send" value="submit">
</form>
jquery代码:
$("#send").click(function(e)){
e.preventDefault();
$.ajax({
url:"myURL",
data: $("#myForm").serialize(), // for serialization of whole form or object b
success: function(result){},
}
因此,这里的行[data:$("#myForm").serialize()]序列化整个对象b或表单"myForm"。这里不需要序列化特定的属性。希望这能帮助