没有属性的C#json序列化和反序列化

本文关键字:序列化 反序列化 C#json 属性 | 更新日期: 2023-09-27 18:27:06

是否可以在不为每个所需属性指定DataMember属性的情况下序列化和反序列化类及其继承?

没有属性的C#json序列化和反序列化

是。您可以使用.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"。这里不需要序列化特定的属性。希望这能帮助