C#使用Newtonsoft.Json.dll解析Json数据-C/S开发框架

第一、解析JSON数据
工具:Newtonsoft.Json 类库/dll
目前我用到解析json数据的就只用到这个类库,用这个类库可以很方便的对于C#和JSON直接进行序列化和反序列化解析
首先我在本地文本文件txt复制了网上一段写好的json数据如下图(该txt文件路径是保存在d盘中):

好了,接下来我们就来解析这个txt文本格式的json数据吧!为了好演示我就直接新建一个控制台代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
JsonSerializer serializer = new JsonSerializer();
using (StreamReader reader=new StreamReader(@"d:\json.txt"))
using (JsonReader jsreader=new JsonTextReader(reader))
{
JObject jo = (JObject)serializer.Deserialize(jsreader);//对于json的反序列化再转化为JObject
Console.WriteLine(jo.ToString());
}
Console.Read();
}
}
}
运行结果:

二、Linq To Json
linq to json的主要类:
1.JObejct :用于操作json的对象
2.JArray: 用来操作json数组
3.JValue :数组中的值
4.JProperty: json对象的属性,通常以key和value类似于字典形式存在
5.JToken :用于存放linq查询的结果值
下面稍微演示下用法,用JObejct创建json数据并且输出代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
JObject jo = new JObject();
jo.Add(new JProperty("name", "张惠妹"));
jo.Add(new JProperty("sex", "女"));
jo.Add(new JProperty("age", "32"));
jo.Add(new JProperty("teachar", new JObject(new JProperty("name", "张雨生"), new JProperty("sex", "男"), new JProperty("age", "30"))));
Console.WriteLine(jo.ToString());
Console.ReadLine();
}
}
}

在这个基础上代码再改下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
JObject jo = new JObject();
jo.Add(new JProperty("name", "张惠妹"));
jo.Add(new JProperty("sex", "女"));
jo.Add(new JProperty("age", "32"));
jo.Add(new JProperty("teachar", new JObject(new JProperty("name", "张雨生"), new JProperty("sex", "男"), new JProperty("age", "30"))));
JToken Tteacher = jo["teachar"];
Console.WriteLine(Tteacher.ToString());
Console.ReadLine();
}
}
}

由此可以知道JToken返回的其实是对应key的value部分,再来用linq to json,首先准备一字符串,用linq 查询王力宏的朋友的名字:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string jsonstr= "{\"Name\" : \"王力宏\", \"Age\" : 34, \"friends\" : [{\"Name\" : \"林俊杰\" , \"Age\":30},{\"Name\" : \"张惠妹\",\"Age\":29}] }";
JObject jo = JObject.Parse(jsonstr);
var a = from b in jo["friends"].Children()
select (string) b["Name"];
foreach (var item in a)
{
Console.WriteLine(item);
}
Console.Read();
}
}
}

简单地对于Json的解析就介绍到这里了。。。有什么不对的地方或者需要改正的地方请大牛们指正
参考文档:
Oracle数据库名称有小数点,使用expdp备份失败:ORA|12154: TNS: 无法解析指定的连接标识符|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置JsonDataSourceConnection连接|C/S开发框架
CSFrameworkV6快速开发框架 | 使用PostgreSql 数据库测试报告|C/S开发框架
ORACLE 使用 expdp 命令导出dmp数据库文件|C/S开发框架
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
达梦数据库 | 使用DM数据迁移工具迁移CSFrameworkV6数据库|C/S框架网|C/S开发框架
达梦数据库 | DM管理工具使用指南|C/S框架网|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置MsSqlDataConnection连接|C/S开发框架
EFCore+.NET8:使用Oracle数据库提交大图片文件需要指定BLOB类型|C/S开发框架
使用EF+Linq或Sql存储过程获取报表数据优缺点分析|C/S开发框架
Oracle:EFCore使用OracleBulkCopy实现批量导入数据|C/S开发框架
使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
C/S开发框架教程:使用基础资料(数据字典)的DAL层更新主从表(或多表)数据
SQLServer SQL函数解析JSON数据格式并返回表
C/S开发框架:系统数据库与账套数据库合并解决方案|C/S开发框架
Oracle数据库名称有小数点,使用expdp备份失败:ORA|12154: TNS: 无法解析指定的连接标识符|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置JsonDataSourceConnection连接|C/S开发框架
CSFrameworkV6快速开发框架 | 使用PostgreSql 数据库测试报告|C/S开发框架
ORACLE 使用 expdp 命令导出dmp数据库文件|C/S开发框架
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
达梦数据库 | 使用DM数据迁移工具迁移CSFrameworkV6数据库|C/S框架网|C/S开发框架
达梦数据库 | DM管理工具使用指南|C/S框架网|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置MsSqlDataConnection连接|C/S开发框架
EFCore+.NET8:使用Oracle数据库提交大图片文件需要指定BLOB类型|C/S开发框架
使用EF+Linq或Sql存储过程获取报表数据优缺点分析|C/S开发框架
Oracle:EFCore使用OracleBulkCopy实现批量导入数据|C/S开发框架
使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
C/S开发框架教程:使用基础资料(数据字典)的DAL层更新主从表(或多表)数据
SQLServer SQL函数解析JSON数据格式并返回表
C/S开发框架:系统数据库与账套数据库合并解决方案|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
