我有这样的课程:
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);
}
}
使用Json.Net库,您可以从 Nuget Packet Manager 下载它。
序列化为 Json 字符串:
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 );