如何在.NET中将C#对象转换为JSON字符串?
如何在.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日
请注意
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); } }
由于我们都喜欢一行代码
…… 这个取决于 Newtonsoft NuGet 包,它比默认的序列化器更受欢迎且更好。
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
文档: 序列化和反序列化 JSON