分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

使用Newtonsoft.Json.dll序列化和反序列化

发布时间:2023-09-06 02:32责任编辑:彭小芳关键词:暂无标签

关键字:【序列化】【反序列化】【Json】【Newtonsoft.Json】

序列化和反序列化的规则

<1>NewtonSoft只能操作public字段or属性

<2>Json字符串若提供类中没有的字段or属性,反序列化时会忽视之,并不抛出异常

<3>反序列化的过程:

调用无参构造函数,new出一个实例,然后使用Json字符串中包含的字段or属性为成员赋值,Json字符串未提供的字段or属性的值是无参构造函数初始化的值或是0,false,null;若类未提供无参构造函数,则调用有参构造函数,但是要保证类仅有一个有参构造函数,多个有参构造函数时,若不指定哪个构造函数来反序列化,编译器会报错。所以,尽可能的为会进行序列化和反序列化的类提供无参构造函数。

class Person{ ???private string name; ???public string Name { get => name; set => name = value; } ???//年龄 ???private int age; ???public int Age { get => age; set => age = value; } ???//城市 ???public string City { get; set; } ???//技能 ???public List<string> languages; ???public Person() ???{ ???????Name = "Andrew Magic"; ???????Age = 20; ???????City = "Zhuhai"; ???????languages = new List<string>(); ???}}

序列化一个对象

Person p1 = new Person();string p1JsonStr = JsonConvert.SerializeObject(p1);

反序列化一个对象

string p2JsonStr = "{\"Name\":\"Jack\" }";Person p2 = JsonConvert.DeserializeObject<Person>(p2JsonStr);

序列化多个对象

Person p3 = new Person();p3.Name = "LiMing";p3.Age = 22;p3.City = "Shanghai";p3.languages.AddRange(new string[] { "C", "Java", "PHP" });Person p4 = new Person();p4.Name = "ZhangSan";p4.Age = 20;p4.City = "Beijing";p4.languages.AddRange(new string[] { "C#", "Python", "Go" });List<Person> list = new List<Person> { p3, p4 };string objectsJsonStr = JsonConvert.SerializeObject(list);

反序列化多个对象

List<Person> list = JsonConvert.DeserializeObject<List<Person>>(objectsJsonStr);foreach (Person item in list){ ???Console.WriteLine(item.Name);}

 Json时间字符串的处理

读取Json字符串的技巧

使用Newtonsoft.Json.dll序列化和反序列化

原文地址:https://www.cnblogs.com/liweiaila/p/10360666.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved