【愚公系列】2023年04月 .NET |
您所在的位置:网站首页 › jsonfromobject › 【愚公系列】2023年04月 .NET |
前言 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,可用于客户端和服务器之间传输数据。JSON使用易于阅读和编写的文本格式,可以描述其他语言中的对象、数组、数字、字符串、布尔和null值,因此被广泛应用于Web服务和数据交换。 强类型和弱类型语言在处理JSON的方式上有所不同。在强类型语言中,必须在代码中显式地定义变量的数据类型,而在解析或生成JSON时,需要使用类似于类型转换这样的技术来将JSON数据转换为强类型数据。而在弱类型语言中,则可以直接将JSON数据解析为动态类型,并使用该数据。这样的话,弱类型语言可能更容易忽略JSON数据的错误,但也更加灵活。 Linq To Json就是解决强类型语言处理Json数据的神器。 一、Linq To Json 1.Linq To Json的定义 Linq To Json是一种在.NET平台上用于处理JSON数据的工具,它可以将JSON数据查询和操作转换为面向对象的LINQ查询语言,便于开发人员在.NET应用程序中对JSON数据进行处理。 2.生成Json 1、JObject的JProperty生成json using Newtonsoft.Json.Linq; JObject json = new JObject( new JProperty("Code", 101), new JProperty("Items", new JArray(new JObject() { new JProperty("OrderTitle","订单1"), new JProperty("Created",DateTime.Now) })) ); Console.WriteLine(json.ToString());
using Newtonsoft.Json.Linq; JObject json = JObject.FromObject(new{ Code = 101, Items = (new[] { new { OrderTitle="订单1",Created=DateTime.Now } }).ToList()}); Console.WriteLine(json.ToString()); 3.解析Json 3.1 Linq解析 { "store":{ "book":[ { "category":"reference", "author":"Nigel Rees", "title":"Sayings of the Century", "price":8.95 }, { "category":"fiction", "author":"Evelyn Waugh", "title":"Sword of Honour", "price":12.99 }, { "category":"fiction", "author":"Herman Melville", "title":"Moby Dick", "isbn":"0-553-21311-3", "price":8.99 }, { "category":"fiction", "author":"J. R. R. Tolkien", "title":"The Lord of the Rings", "isbn":"0-395-19395-8", "price":22.99 } ], "bicycle":{ "color":"red", "price":19.95 } }} using Newtonsoft.Json.Linq; var json = System.IO.File.ReadAllText("1.txt"); JObject obj = JObject.Parse(json); var dict = obj["store"]["book"].GroupBy(m => m["category"]) .ToDictionary(k => k.Key, v => v.Select(n => n.Value("price")).Sum()); foreach (var key in dict.Keys){ Console.WriteLine($"key={key},value={dict[key]}");} 3.2 Jsonpath解析 jsonpath 就像 xmlpath 一样,非常强大,更多的功能可以参考这个网页:https://goessner.net/articles/JsonPath/ var json = System.IO.File.ReadAllText("1.txt"); JObject obj = JObject.Parse(json); var priceList= obj.SelectTokens("$..price"); foreach (var price in priceList){ Console.WriteLine(price.Value());} |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |