首页 / .NET / 正文

[.NET]C#程序开发中如何将C#类(对象)序列化成对应的JSON字符串(.NET 4.0版本)?

4266 发布于: 2018-01-23 读完约需7分钟

[.NET]C#程序开发中如何将C#类(对象)序列化成对应的JSON字符串(.NET 4.0版本)?

问题描述

比如当前有如下两个实体类,分别为:

class MyDate
{
    int year, month, day;
}

class Lad
{
    string firstName;
    string lastName;
    MyDate dateOfBirth;
}

现在需要将以上两个类的实体对象序列化成如下的JSON字符串:

{
    "firstName":"Markoff",
    "lastName":"Chaney",
    "dateOfBirth":
    {
        "year":"1901",
        "month":"4",
        "day":"30"
    }
}

方案一

可以使用 JavaScriptSerializer 类实现需求的序列化操作。
首先,引用命名空间 System.Web.Extensions :

using System.Web.Script.Serialization;

然后调用 JavaScriptSerializer 类实例对象的 Serialize 方法,如下:

var json = new JavaScriptSerializer().Serialize(obj);

一个完整的使用示例如下:

using System;
using System.Web.Script.Serialization;

public class MyDate
{
    public int year;
    public int month;
    public int day;
}

public class Lad
{
    public string firstName;
    public string lastName;
    public MyDate dateOfBirth;
}

class Program
{
    static void Main()
    {
        var obj = new Lad
        {
            firstName = "Markoff",
            lastName = "Chaney",
            dateOfBirth = new MyDate
            {
                year = 1901,
                month = 4,
                day = 30
            }
        };
        var json = new JavaScriptSerializer().Serialize(obj);
        Console.WriteLine(json);
    }
}

方案二

我们也可以使用第三方的JSON序列化类库组件,比如来自 Newtonsoft 的JSON序列化及反序列化组件 JSON.Net,在C#程序中处理类似的序列化与反序列化操作就非常简单和容易了,如:

Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})

比如此案例中的示例使用 JSON.Net 组件实现的代码如下:

var obj = new Lad
        {
            firstName = "Markoff",
            lastName = "Chaney",
            dateOfBirth = new MyDate
            {
                year = 1901,
                month = 4,
                day = 30
            }
        };

var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

反序列化:

var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Lad>(jsonString );

具体的文档可以参考:Serializing and Deserializing JSON

方案三

当然,你也可以使用 ServiceStack 的JSON序列化组件,使用方法如下:

首先,使用 ServiceStack.Text 的命名空间:

using ServiceStack.Text;

然后,使用 ServiceStack 的序列化器来序列化C#实体对象,如:

string jsonString = new { FirstName = "James" }.ToJson();

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [.NET]C#中如何将一个字符串按换行符拆分成多行?

下一篇: [.NET/C#]C#应用程序中如何从配置文件(app.config或web.config)中读取配置选项?

本文永久链接码友网 » [.NET]C#程序开发中如何将C#类(对象)序列化成对应的JSON字符串(.NET 4.0版本)?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册