介绍

项目中数据格式如果是是Json格式,推荐大家使用LitJson和Newtonsoft.json进行解析

库的详细介绍和下载地址

推荐使用VS自带的Nuget来使用

Newtonsoft.Json:https://www.newtonsoft.com/json

LitJson:https://litjson.net/

序列化和反序列化

序列化:将对象状态转换成可保持或传输的格式的过程。

反序列化:将流转换成对象。

通俗讲,序列化用于数据传输,反序列用户数据存储。

Json使用

打开Visual Studio,选择IDE上面的工具选项--》Nuget包管理器--》管理解决方案的Nuget程序包

Json示例

简单解析

初始数据

{
"total": 1,
"code": 0,
"rows": [
{
"id": 1013,
"name": "QB",
"version": "1.0.2",
"size": 707608
}
]
}

LitJson源码

using LitJson2;
String str = "{\"total\":1,\"code\":0,\"rows\":[{\"id\":1013,\"name\":\"QB\",\"version\":\"1.0.2\",\"size\":707608}]}";
public static void LitJson(string DataJson)
{
JsonData json = JsonMapper.ToObject(DataJson);
if((int)json["code"]==0) //判断一级目录下code是否为0
{
JsonData data = json["rows"][0];
int id = (int)data["id"];
string name = data["name"].ToString();
Console.WriteLine(id+name); }
Console.ReadLine();
}

Newtonsoft.json简单解析

using Newtonsoft.Json.Linq;
String str = "{\"total\":1,\"code\":0,\"rows\":[{\"id\":1013,\"name\":\"QB\",\"version\":\"1.0.2\",\"size\":707608}]}";
public static void Newtonsoft(string DataJson)
{
JObject json = JObject.Parse(DataJson);
if ((int)json["code"] == 0) //判断一级目录下code是否为0
{ string dataS = json["rows"][0].ToString();
JObject data = JObject.Parse(dataS);
int id = (int)data["id"];
string name = data["name"].ToString();
Console.WriteLine(id + name); }
Console.ReadLine();
}

运行结果

Json序列化和反序列化

/// <summary>
/// 学生信息实体
/// </summary>
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public Class Class { get; set; }
}
/// <summary>
/// 学生班级实体
/// </summary>
public class Class
{
public int ID { get; set; }
public string Name { get; set; }
} public static void Newtonsoft(string DataJson)
{
Student stu = new Student();
stu.ID = 1; //自己定义Json数据
stu.Name = "张三";
stu.Class = new Class() { ID = 0121, Name = "CS0121" };
//使用方法1
//实体序列化、反序列化
//结果:{"ID":1,"Name":"张三","Class":{"ID":121,"Name":"CS0121"}}
string json1 = JsonConvert.SerializeObject(stu);
Console.WriteLine(json1);
Student stu2 = JsonConvert.DeserializeObject<Student>(json1);
Console.WriteLine(stu2.Name + "---" + stu2.Class.Name);
Console.ReadLine();
}

项目下载地址

https://gitee.com/PErobin/DllTest.git

参考博客

C# Json序列化工具--Newtonsoft.Json的简介和使用https://blog.csdn.net/u011127019/article/details/51706619

Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)https://blog.csdn.net/u010388954/article/details/79741069

Json C#解析的更多相关文章

  1. plist文件、NSUserDefault 对文件进行存储的类、json格式解析

    ========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...

  2. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...

  3. JSON数据解析 基础知识及链接收集

    JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

  4. 浅谈JSON数据解析方法

    JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...

  5. JSON数据解析(转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  6. JSON数据解析(GSON方式) (转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...

  7. iOS - JSON 数据解析

     iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

  8. JSON.parse解析单引号名值对报错

    今天整理代码的时候发现JSON.pare解析时会报了一个错误,而且很难找原因,调试了几分钟没有成功,猜测可能是单双引号引起的错误.修改了单双引号后程序正常运行了,现在记录下这个bug. 关于JSON. ...

  9. Android系列---JSON数据解析

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  10. JSON数据解析(转)

    上篇随笔详细介绍了三种解析服务器端传过来的xml数据格式,而对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通过 ...

随机推荐

  1. sql认识

    DDL – Data Definition Language数据定义语言DML – Data Manipulation Language数据操作语言DCL – Data Control Languag ...

  2. luogu P2481 [SDOI2010]代码拍卖会

    luogu 题目中的那个大数一定是若干个1+若干个2+若干个3...+若干个9组成的,显然可以转化成9个\(\underbrace {111...1}_{a_i个1}(0\le a_1\le a_2\ ...

  3. crm客户资源显示控制

    为便于员工之间的良性竞争,避免恶意挖客户,对于不同的登录用户,在客户列表中只显示当用用户自己所拥有的客户列表. ---具体的,通过在列表显示界面的列表查询语句中增加根据用户id查询其对应的客户资源的条 ...

  4. ECharts 中的事件和行为

    在 ECharts 的图表中用户的操作将会触发相应的事件.开发者可以监听这些事件,然后通过回调函数做相应的处理,比如跳转到一个地址,或者弹出对话框,或者做数据下钻等等. 如下是一个绑定点击操作的示例. ...

  5. unittest assert断言

    unittest常用的断言方法 1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotE ...

  6. laravel-admin后台框架基本使用

    建立控制器 在app/Admin/Controllers新建对应的控制器来管理某个数据表.控制器例子: <?php namespace App\Admin\Controllers; use En ...

  7. 接口开发中 遇到的坑——Java byte与C# byte 数据转换问题

    前提: 公司与其他公司进行接口对接 需要使用Byte[]数据流传输数据 原本想法如下:直接IO生成就ok了 using System; using System.IO; using System.Te ...

  8. linux上安装Eclipse

    之所以要在linux上安装Eclipse,是因为一开始我是通过Eclipse+MingW+Samba+GDBserver方式在Windows上远程操作,准备编译调试nginx源代码的,可是在编译调试过 ...

  9. ieda与svn的配置与使用

    一.idea配置svn 快捷键Ctrl+Alt+s或者File--Settings-- Subversion 设置svn客户端(小乌龟)的svn.exe可执行程序(如果找不到,请看另一篇文章)     ...

  10. Jmeter分布式测试dubbo接口1

    最近工作中接到一个需求,需要对一个Dubbo接口进行压力测试,测试其性能,之前一直使用jmeter做压力测试,在踏了好多坑之后,决定把这些记录下来,顺便也希望能帮助到大家. 开始测试之前,我们需要先知 ...