C#使用LitJson解析JSON的示例代码
作者:peiandsky 发布时间:2021-11-17 06:35:05
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
如果曾经使用过Json,就会清楚Json可以分为两个部分:
1. Json Object(A collection of name/value pairs)
2. JSON Array (An ordered list of values)
解析JSON的开源包非常多,在各种场合使用非常广泛,尤其长于网络传输。
本文介绍使用LitJson,并用C#语言来介绍使用JSON,可以在C#应用程序,web程序,还有Unity3d C#脚本中使用。
第一步:先去下载LitJson并导入当前的项目。
第二步:litJson的几个实例方式
1.使用JsonData来处理生成json:{"name":"peiandsky","age":28,"sex":"male"}
JsonData data = new JsonData();
data["name"] = "peiandsky";
data["age"] = 28;
data["sex"] ="male";
string json1= data.ToJson();
2.对象中嵌套对象:{"name":"peiandsky","info":{"sex":"male","age":28}}
JsonData data2 = new JsonData();
data2["name"] = "peiandsky";
data2["info"] = new JsonData();
data2["info"]["sex"] = "male";
data2["info"]["age"] = 28;
string json2 = data2.ToJson();
3. 将上述两种方式的Json解析到JsonData
JsonData jsonData2 = JsonMapper.ToObject(json2);
Debug.Log(jsonData2["name"] + " " + data2["info"]["sex"]);
4.使用JsonMapper来处理Json
Player player = new Player();
player.name = "peiandsky";
player.age = 23;
player.sex = "male";
string json=JsonMapper.ToJson(player);
5. 解析4中的json
Player player2 = JsonMapper.ToObject<Player>(json);
6. 使用最原始的方式生成Json
将数组转换成json:["one","two","three","four"]
JsonWriter writer = new JsonWriter();
writer.WriteArrayStart();
writer.Write("one");
writer.Write("two");
writer.Write("three");
writer.Write("four");
writer.WriteArrayEnd();
将复合对象转换成json字符串:{"book":{"title":"android game!","author":"pei","bookdetail":{"pages":429,"about":null}}}
JsonWriter writer2 = new JsonWriter();
writer2.WriteObjectStart();
writer2.WritePropertyName("book");
writer2.WriteObjectStart();
writer2.WritePropertyName("title");
writer2.Write("android game!");
writer2.WritePropertyName("author");
writer2.Write("pei");
writer2.WritePropertyName("bookdetail");
writer2.WriteObjectStart();
writer2.WritePropertyName("pages");
writer2.Write(429);
writer2.WritePropertyName("about");
writer2.Write(null);
writer2.WriteObjectEnd();
writer2.WriteObjectEnd();
writer2.WriteObjectEnd();
Debug.Log(writer2.ToString());
这种方式非常不方便,不建议使用。
在使用LitJson中,建议使用JsonData,JsonMapper来处理Json的编码和解析。
Person[] p_array = { p,p,p};
string json_array=JsonMapper.ToJson(p_array);
Debug.Log(json_array);
JsonData pa = JsonMapper.ToObject(json_array);
Debug.Log(pa.IsArray+" "+pa.Count);
for (int i = 0; i < pa.Count;i++ )
{
Debug.Log(pa[i]["name"]+"-"+pa[i]["age"]+"-"+pa[i]["score"]+"-"+pa[i]["birth"]);
int age = int.Parse(pa[i]["age"].ToString());
Debug.Log(age);
}
来源:http://www.cnblogs.com/peiandsky/archive/2012/04/20/2459219.html


猜你喜欢
- 1.之前在使用AutoMapper 框架感觉用着比较不够灵活,而且主要通过表达式树Api 实现对象映射 ,写着比较讨厌,当出现复杂类型和嵌套
- 本文实例为大家分享了android绘制曲线和折线图的具体代码,供大家参考,具体内容如下(曲线) (折线)1.CurveView.j
- using System;using System.Collections.Generic;using System.IO;using Sy
- 1 什么是class对象类是程序的一部分,每个类都有一个class对象。换言之,每当编写并且编译了一个新类,就会产生一个class对象(更恰
- 手动将本地jar添加到Maven仓库将jar添加到本地仓库的做法以下面pom.xml依赖的jar包为例:实际项目中pom.xml依赖写法:&
- SpringBoot运行Test时报错运行Test时的报错信息:SpringBoot Unable to find a @SpringBoo
- 本文实例讲述了Java matches类,Pattern类及matcher类用法。分享给大家供大家参考,具体如下:Pattern类正则表达式
- mybatis实体类字段大小写问题 字段获取不到值由于前期设计问题,项目中需要用到的一个字段 rootpath,所以我再实体层加了这么一个字
- 今天给大家介绍一下一个web 中经常会用到的截图(如:头像等)工具:Jcrop演示项目结构:效果图:这个很有用:看到这些,大家也想自己试试吧
- 本文研究的主要是高吞吐、线程安全的LRU缓存的相关内容,具体介绍如下。几年以前,我实现了一个LRU缓存用来为关键字来查找它的id。数据结构非
- 目录什么是抽象类和接口? 区别在哪里?抽象类接口抽象类和接口解决了什么问题?如何模拟抽象类和接口如何决定该用抽象还是接口?什么是抽象类和接口
- Android 7.0行为变更 FileUriExposedException解决方法当我们开发关于【在应用间共享文件】相关功能的时候,在A
- 1、@Configuration&@Bean给容器中注册组件@Configuration及@Bean的使用参考如下代码:packag
- 从接收输入值说起在日常的开发应用中,有时候需要直接接收外部设备如键盘等的输入值,而对于这种数据的接收方式,我们一般有三种方法:字节流读取,字
- java * 的方法总结AOP的拦截功能是由java中的 * 来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该
- 本文实例讲述了Android编程实现等比例显示图片的方法。分享给大家供大家参考,具体如下:在android中,由于密度的影响,如果想得到图片
- 枚举中有values方法用于按照枚举定义的顺序生成一个数组,可以用来历遍。我们自定义的枚举类都是继承自java.lang.Enum,拥有一下
- 在文章中,我们将对输入到机器学习模型中的数据集进行预处理。这里我们将对一个硬币数据集进行预处理,以便以后在监督学习模型中进行训练。在机器学习
- 本文主要介绍了Maven实战之搭建Maven * 和镜像的方法(图文),分享给大家,具体如下:准备工作安装3.6.*的Nexus理论Nexus
- Java中避免NullPointerException的方法总结在字符串常量上调用equals// good"string lit