一、添加动态库方式
1.下载动态库,直接添加引用
2.引用右键》Nuget包管理,添加
二、使用方式
定义实体类
/// <summary>
/// 用户实体
/// </summary>
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
1.实体类使用
User user1 = new User();
user1.Id = 1;
user1.Name = "李四";
//方式1
//实体类序列化、反序列
//结果:{"Id":1,"Name":"李四"}
string json = Newtonsoft.Json.JsonConvert.SerializeObject(user1);
User user2 = Newtonsoft.Json.JsonConvert.DeserializeObject<User>(json);
Newtonsoft.Json.Linq.JObject jobj = Newtonsoft.Json.Linq.JObject.Parse(json);
//实体集合序列化、反序列
//结果:[{"Id":1,"Name":"李四"},{"Id":1,"Name":"李四"}]
List<User> users = new List<User>() { user1, user2 };
string json2 = Newtonsoft.Json.JsonConvert.SerializeObject(users);
List<User> users2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<User>>(json2);
Newtonsoft.Json.Linq.JArray jArray = Newtonsoft.Json.Linq.JArray.Parse(json2);
for (int i = 0; i < jArray.Count; i++)
{
dynamic item = jArray[i];
Console.WriteLine(item.Id);
}
2.dynamic 匿名方式
//dynamic序列化、反序列
//结果:{\r\n \"Id\": 2,\r\n \"Name\": \"张三\"\r\n}
dynamic userD = new Newtonsoft.Json.Linq.JObject();
userD.Id = 2;
userD.Name = "张三";
//dynamic userD = new { Id = 2, Name = "张三" };
string json3 = userD.ToString();
dynamic userD2 = Newtonsoft.Json.Linq.JObject.Parse(json3);
//List<dynamic>序列化、反序列
//结果:[{\"Id\":2,\"Name\":\"张三\"},{\"Id\":2,\"Name\":\"张三\"}]
List<dynamic> dynamics = new List<dynamic>() { userD, userD2 };
string json4 = Newtonsoft.Json.JsonConvert.SerializeObject(dynamics);
List<dynamic> dynamics2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<dynamic>>(json4);
Newtonsoft.Json.Linq.JArray jArray2 = Newtonsoft.Json.Linq.JArray.Parse(json4);
foreach (dynamic item in jArray2)
{
Console.WriteLine(item.Id);
}
3.JObject和JArray使用
//方式3
//JObject和JArray 混合使用
var jObject = new Newtonsoft.Json.Linq.JObject();
jObject["class"] = "一班";
jObject["students"] = new Newtonsoft.Json.Linq.JArray();
var student = new Newtonsoft.Json.Linq.JObject();
student.Add(new JProperty("Id", "1"));
student.Add(new JProperty("Name", "小明"));
(jObject["students"] as Newtonsoft.Json.Linq.JArray).Add(student);
string josn = jObject.ToString();
//{
// "class": "一班",
// "students": [
// {
// "Id": "1",
// "Name": "小明"
// }
// ]
//}
三、格式化Json
User user1 = new User();
user1.Id = 1;
user1.Name = "李四";
//默认格式化Json
string json1 = Newtonsoft.Json.JsonConvert.SerializeObject(user1, Newtonsoft.Json.Formatting.Indented);
//{
// "Id": 1,
// "Name": "李四"
//}
//不格式化一行Json
string json2 = Newtonsoft.Json.JsonConvert.SerializeObject(user1, Newtonsoft.Json.Formatting.None);
//{"Id":1,"Name":"李四"}