我有这样的课程。
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字符串写入器,还有其他选择吗?
因为我们都喜欢单口相声。
...这个依赖于Newtonsoft的NuGet包,它很受欢迎,比默认的序列化器更好。
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
文档。序列化和反序列化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);
}
}
使用DataContractJsonSerializer
类。MSDN1, MSDN2。
我的例子。这里。
它也可以从JSON字符串中安全地反序列化对象,与JavaScriptSerializer
不同。但我个人还是喜欢Json.NET。