如何在.NET中将C#对象转换为JSON字符串?

我有这样的课程:

class MyDate
{
    int year, month, day;
}

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

我想将一个Lad对象变成如下的JSON字符串:

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

(没有格式)。 我发现这个链接,但它使用了一个不在.NET 4中的命名空间。我也听说过JSON.NET,但他们的网站似乎目前处于关闭状态,而且我并不热衷于使用外部DLL文件。 除了手动创建JSON字符串编写器之外,还有其他选项吗?


您可以使用JavaScriptSerializer类(添加对System.Web.Extensions引用):

using System.Web.Script.Serialization;
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);
    }
}

因为我们都爱一个衬里

...这个取决于Newtonsoft NuGet包,它比默认的序列化器更流行,更好。

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

文档: 序列化和反序列化JSON


使用DataContractJsonSerializer类:MSDN1,MSDN2。

我的例子:这里。

JavaScriptSerializer不同,它也可以安全地反序列化JSON字符串中的对象。 但个人而言,我仍然更喜欢Json.NET。

链接地址: http://www.djcxy.com/p/6455.html

上一篇: How do I turn a C# object into a JSON string in .NET?

下一篇: Ignoring new fields on JSON objects using Jackson