文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Newtonsoft.Json怎么在c#项目中使用

2023-06-06 10:47

关注

本篇文章为大家展示了 Newtonsoft.Json怎么在c#项目中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1 实体类的 Json 序列化和反序列化

我们以如下的 Person 类举例,其中包含了常用的数据类型:

public class Person{ public int ID { get; set; } public string Name { get; set; } public DateTime Birthday { get; set; } public bool IsVIP { get; set; }  public float Account { get; set; } public string[] Favorites { get; set; }  public string Remark { get; set; }}

创建一个 Person 实例:

Person person = new Person{ ID = 1, Name = "张三", Birthday = DateTime.Parse("2000-01-02"), IsVIP = true, Account = 12.34f, Favorites = new string[] { "吃饭", "睡觉" }};

1.1 Json 序列化

返回不缩进的 Json 字符串

JsonConvert.SerializeObject(person);{"ID":1,"Name":"张三","Birthday":"2000-01-02T00:00:00","IsVIP":true,"Account":12.34,"Favorites":["吃饭","睡觉"],"Remark":null}

返回缩进的 Json 字符串

JsonConvert.SerializeObject(person, Formatting.Indented);{ "ID": 1, "Name": "张三", "Birthday": "2000-01-02T00:00:00", "IsVIP": true, "Account": 12.34, "Favorites": [  "吃饭",  "睡觉" ], "Remark": null}

1.2 将不缩进的 JSON 字符串转成缩进形式

private string JsonIndentation(string str){ //string str = JsonConvert.SerializeObject(entity); JsonSerializer serializer = new JsonSerializer(); TextReader tr = new StringReader(str); JsonTextReader jtr = new JsonTextReader(tr); object obj = serializer.Deserialize(jtr); if (obj != null) {  StringWriter textWriter = new StringWriter();  JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)  {   Formatting = Formatting.Indented,   Indentation = 4,   IndentChar = ' '  };  serializer.Serialize(jsonWriter, obj);  return textWriter.ToString(); } else {  return str; }}

或者:

private string JsonIndentation(string json){ JObject obj = JObject.Parse(json); return obj.ToString();}

1.3 其他设置

JsonSerializerSettings settings = new JsonSerializerSettings();// 设置日期格式settings.DateFormatString = "yyyy-MM-dd";// 忽略空值settings.NullValueHandling = NullValueHandling.Ignore;// 缩进settings.Formatting = Formatting.Indented;JsonConvert.SerializeObject(person, settings);

返回:

{ "ID": 1, "Name": "张三", "Birthday": "2000-01-02", "IsVIP": true, "Account": 12.34, "Favorites": [ "吃饭", "睡觉" ]}

1.4 Json 反序列化

JsonConvert.DeserializeObject<Person>(json);

2 JObject 使用

2.1 创建对象

JObject obj = new JObject();obj.Add("ID", 1);obj.Add("Name", "张三");obj.Add("Birthday", DateTime.Parse("2000-01-02"));obj.Add("IsVIP", true);obj.Add("Account", 12.34f);// 创建数组JArray array = new JArray();array.Add(new JValue("吃饭"));array.Add(new JValue("睡觉"));obj.Add("Favorites", array);obj.Add("Remark", null);

2.2 JObject 中添加数组

上例中的代码可以简化为:

JArray array = new JArray("吃饭", "睡觉");

2.3 从 Json 字符串创建 JObject

string json = "{\"ID\":1,\"Name\":\"张三\",\"Birthday\":\"2000-01-02T00:00:00\",\"IsVIP\":true,\"Account\":12.34,\"Favorites\":[\"吃饭\",\"睡觉\"],\"Remark\":null}";JObject obj = JObject.Parse(json);

2.4 从 Entity 创建 JObject

JObject obj = JObject.FromObject(person);

用匿名对象创建 JObject

JObject obj = JObject.FromObject(new { name = "jack", age = 18 });//显示{ "name": "jack", "age": 18}

用初始化器

JObject obj = new JObject(){ { "name", "jack" }, { "age", 18 }};

2.5 获取值

int id;if (obj["ID"] != null) id = obj["ID"].Value<int>();

2.6 获取数组

Newtonsoft.Json.Linq 不支持直接获取数组,但是可以获取 List,然后再转化为数组。

string[] favorites;if (obj["Favorites"] != null) favorites = obj["Favorites"].Value<List<string>>().ToArray();

上述内容就是 Newtonsoft.Json怎么在c#项目中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯