如何在.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。