【愚公系列】2023年04月 .NET

您所在的位置:网站首页 jsonfromobject 【愚公系列】2023年04月 .NET

【愚公系列】2023年04月 .NET

2023-05-04 01:35| 来源: 网络整理| 查看: 265

前言

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());

2、JObject的匿名类生成json

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