C# Json序列化动态库,Newtonsoft.Json.dll 实体类和匿名使用方法

一、添加动态库方式

        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":"李四"}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿码当先

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值