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

31 浏览
0 Comments

如何在.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字符串编写器之外,还有其他选项吗?

admin 更改状态以发布 2023年5月22日
0
0 Comments

请注意

Microsoft建议您不要使用JavaScriptSerializer。

请参阅文档页的页眉:

对于.NET Framework 4.7.2及更高版本,请使用System.Text.Json命名空间中的API进行序列化和反序列化。 对于早期版本的.NET Framework,请使用Newtonsoft.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);
    }
}

0
0 Comments

由于我们都喜欢一行代码

…… 这个取决于 Newtonsoft NuGet 包,它比默认的序列化器更受欢迎且更好。

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

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

0