介绍
Json是一个简单但功能强大的,用于specify data。它定义了简单的数值类型例如布尔型、数字(整型和实数)和字符串,以及一些数据结构:数组(list)和对象(字典)。LitJSON是一个C#.Net库,用于处理JSON(JavaScript Object Notation)字符串的转换。
将JSON映射到Object及反映射
为了在.Net程序中使用JSON格式的数据,最先在心中想到的方法是在一个特定类的实例中填充JSON文本,或者一个定制的类,用于匹配输入的JSON文本结构,也可以更通用的使用一个类似字典的类。
相反,为了将存储在对象中的数据构建新的JSON字符串,如果有一个简单导出的操作就很棒了。
为了达到这一点,LitJSON包含JsonMapper类,可以提供两个主要方法来达到JSON-to-object和object-to-JSON的转换。这两个方法是JsonMapper.ToObject和JsonMapper.ToJson。
简单的JsonMapper示例
using LitJson;
using System;
public class Person
{
// C# 3.0 auto-implemented properties
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
public class JsonSample
{
public static void Main()
{
PersonToJson();
JsonToPerson();
}
public static void PersonToJson()
{
Person bill = new Person();
bill.Name = "William Shakespeare";
bill.Age = 51;
bill.Birthday = new DateTime(1564, 4, 26);
string json_bill = JsonMapper.ToJson(bill);
Console.WriteLine(json_bill);
}
public static void JsonToPerson()
{
string json = @"
{
""Name"" : ""Thomas More"",
""Age"" : 57,
""Birthday"" : ""02/07/1478 00:00:00""
}";
Person thomas = JsonMapper.ToObject<Person>(json);
Console.WriteLine("Thomas' age: {0}", thomas.Age);
}
}
输出示例:
{"Name":"William Shakespeare","Age":51,"Birthday":"04/26/1564 00:00:00"}
Thomas' age: 57
JsonMapper.ToObject的非泛型变体使用
当要读取JSON数据时,匹配特定数据结构的类不可用或不需要的时候,使用者可以使用ToObject的非泛型变体,可以返回一个JsonData实例。JsonData是一个可以保存任何JSON支持的数据类型的普通类,包括list和字典。
using LitJson;
using System;
public class JsonSample
{
public static void Main()
{
string json = @"
{
&#