C#使用LitJson对Json数据解析
JSON 介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。
Json语法
JSON 语法是 JavaScript 对象表示语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 名称/值对 JSON 数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开: "firstName":“Name" 这很容易理解,等价于这条 JavaScript 语句: firstName="Name"
LitJson介绍
LitJson是一个开源项目,比较小巧轻便,安装也很简单,在Unity里只需要把LitJson.dll放到Plugins文件夹下,并在代码的最开头添加 “Using LitJson”就可以了。简单来说,LitJson的用途是实现Json和代码数据之间的转换,一般用于从服务器请求数据,得到返回的Json后进行转换从而在代码里可以访问。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson; public class JSONTest : MonoBehaviour
{ //使用JsonWriter创建Json 对象
private void JsonPright()
{
//{ "name":"张三","lv":1,"job":"法师","exp":1.1} //1.创建json对象
JsonWriter writer = new JsonWriter();
//开始写入对象
writer.WriteObjectStart();
//写入键
writer.WritePropertyName("name");
//写入值
writer.Write("张三");
//写入键
writer.WritePropertyName("lv");
//写入值
writer.Write();
//结束写入对象
writer.WriteObjectEnd();
//print(writer); } //使用JsonData创建Json对象
private void JsonPright1()
{
//{ "name":"张三","lv":1,"job":"法师","exp":1.1}
JsonData data = new JsonData();
data["name"] = "张三";
data["lv"] = ;
data["job"] = "法师";
data["exp"] = 1.1;
string toJson = data.ToJson();
print(toJson); //LitJson解析Json对象 (往后需要用)
JsonData data1 = JsonMapper.ToObject(data.ToJson());
name = data1["name"].ToString();
int lv = int.Parse(data["lv"].ToString());
string job = data["job"].ToString();
float exp = float.Parse(data["exp"].ToString()); } //Json生成 解析练习
private void JsonPright2()
{
// { "name":"王五","lv":3,"job":"骑士","exp":3.3}
JsonData data = new JsonData();
data["name"] = "王五";
data["lv"] = "";
data["job"] = "骑士";
data["exp"] = "3.3"; string dataJson = data.ToJson();
print(dataJson); //解析对象
JsonData data1 = JsonMapper.ToObject(data.ToJson());
name = data1["name"].ToString();
int lv = int.Parse(data1["lv"].ToString());
string job = data1["job"].ToString();
float exp = float.Parse((data1["exp"].ToString())); print(exp); }
//生成复合json对象,并解析
private void JsonPright3()
{
// { "name":"李四","info":{ "lv":2,"job":"战士","exp":2.2} }
JsonData data = new JsonData();
data["name"] = "李四";
data["info"] = new JsonData();
data["info"]["lv"] = "";
data["info"]["job"] = "战士";
data["info"]["exp"] = "2.2";
string json = data.ToJson();
print(json); //解析复合对象
JsonData data1 = JsonMapper.ToObject(data.ToJson());
name = data1["name"].ToString();
int lv = int.Parse(data1["info"]["lv"].ToString());
string job = data1["info"]["job"].ToString();
string exp = data1["info"]["exp"].ToString();
print(job); }
//使用JsonData 创建数组对象
private void JsonPrightArr()
{
//["张三",1,"法师",1.1]
JsonWriter writer = new JsonWriter();
writer.WriteArrayStart();
writer.Write("张三");
writer.Write();
writer.Write("法师");
writer.Write(1.1);
writer.WriteArrayEnd(); print(writer);
}
//使用Writer 创建数组对象
private void JsonPrightArr1()
{
//[{"name":"张三","lv":1,"job":"法师","exp":1.1},{"name":"李四","lv":2,"job":"战士","exp":2.2}]
JsonWriter writer = new JsonWriter();
writer.WriteArrayStart();
writer.WriteObjectStart();
writer.WritePropertyName("name");
writer.Write("张三");
writer.WritePropertyName("lv");
writer.Write("");
writer.WritePropertyName("job");
writer.Write("法师");
writer.WritePropertyName("exp");
writer.Write("1.1");
writer.WriteObjectEnd(); writer.WriteObjectStart();
writer.WritePropertyName("name");
writer.Write("李四");
writer.WritePropertyName("lv");
writer.Write("");
writer.WritePropertyName("job");
writer.Write("战士");
writer.WritePropertyName("exp");
writer.Write("1.5");
writer.WriteObjectEnd(); writer.WriteArrayEnd();
print(writer);
}
//使用JsonWriter 创建Json数组对象
private void JsonPrightArr2()
{
//[{"name":"李四","info":{"lv":2,"job":"战士","exp":2.2}}]
JsonWriter writer = new JsonWriter();
writer.WriteArrayStart();
writer.WriteObjectStart();
writer.WritePropertyName("name");
writer.Write("李四");
writer.WritePropertyName("info"); writer.WriteObjectStart();
writer.WritePropertyName("lv");
writer.Write("");
writer.WritePropertyName("job");
writer.Write("战士");
writer.WritePropertyName("exp");
writer.Write("2.2");
writer.WriteObjectEnd(); writer.WriteObjectEnd();
writer.WriteArrayEnd(); print(writer);
}
//使用JsonData 创建数组Json对象
private void JsonPirghtArr3()
{
//[{"name":"李四","info":{"lv":2,"job":"战士","exp":2.2}}]
JsonData data = new JsonData();
data["name"] = "李四";
data["info"] = new JsonData();
data["info"]["lv"] = "";
data["info"]["job"] = "战士";
data["info"]["exp"] = "2.2"; JsonData jd = new JsonData();
jd.Add(data.ToJson()); print(jd.ToJson()); ////解析数组 尚未完成 报错
//JsonData data1 = JsonMapper.ToObject();
//name = data1[0]["name"].ToString();
//int lv = int.Parse(data1[0]["lv"].ToString());
//string job = data1[1]["job"].ToString();
//string exp = data1[1]["exp"].ToString(); //print(exp); } private void OnGUI()
{
if (GUILayout.Button("使用JsonWriter创建Json 对象"))
{
JsonPright();
}
if (GUILayout.Button("使用JsonData创建Json对象"))
{
JsonPright1();
}
if (GUILayout.Button("Json生成 解析练习"))
{
JsonPright2();
}
if (GUILayout.Button("生成复合json对象,并解析"))
{
JsonPright3();
}
if (GUILayout.Button("使用JsonData 创建数组对象"))
{
JsonPrightArr();
}
if (GUILayout.Button("使用Writer 创建数组对象"))
{
JsonPrightArr1();
}
if (GUILayout.Button("使用JsonWriter 创建Json数组对象"))
{
JsonPrightArr2();
}
if (GUILayout.Button("使用JsonData 创建数组Json对象"))
{
JsonPirghtArr3();
} }
}
CreateJson
JsonWriter这种方式非常不方便,不建议使用。
在使用LitJson中,建议使用JsonData,JsonMapper来处理Json的编码和解析。
C#使用LitJson对Json数据解析的更多相关文章
- Unity3d-XML文件数据解析&JSON数据解析
1.XML文件数据解析:(首先须要导入XMLParser解析器,The latest released download from:http://dev.grumpyferret.com/unity/ ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...
- JSON数据解析 基础知识及链接收集
JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...
- 浅谈JSON数据解析方法
JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...
- JSON数据解析(转)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...
- JSON数据解析(GSON方式) (转)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...
- iOS - JSON 数据解析
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
- iOS开发笔记3:XML/JSON数据解析
这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSeri ...
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...
随机推荐
- 浅谈Laravel框架的CSRF
前文 CSRF攻击和漏洞的参考文章: http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html Laravel默认是开启了CSRF功能, ...
- params over length limit is 20
- Wasserstein距离 和 Lipschitz连续
EMD(earth mover distance)距离: 在计算机科学与技术中,地球移动距离(EMD)是一种在D区域两个概率分布距离的度量,就是被熟知的Wasserstein度量标准.不正式的说,如果 ...
- Sonar及其eclipse插件的安装 详细 http://www.importnew.com/10017.html
参考:http://www.importnew.com/10017.html
- ScheduledThreadPoolExecutor 线程池调度 使用
package other; import java.util.concurrent.Callable; import java.util.concurrent.Executors; import j ...
- MathExamLv2——周世元211606348,许燕婷211606338
结对编程 211606348 周世元 211606338 许燕婷 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) P ...
- 78. Subsets (Back-Track, DP)
Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...
- 使用ES(elasticsearch) 搜索引擎
介绍 https://blog.csdn.net/andyzhaojianhui/article/details/75195296 创建语句 { "company":{ &quo ...
- PLSQL优化基础和性能优化 (学习总结)
PLSQL优化基础和性能优化 (学习总结) 网上有一篇关于PLSQL优化的文章,不错,个人根据自己的经验再稍加整理和归纳,总结PLSQL优化和性能调优 适合有一定PLSQL基础,需要进一步提高的学友看 ...
- leetcode 14 最长公共前缀
描述: 给个字符串vector,求最长公共前缀. 解决: 直接取第一个字符串作为最长公共前缀,将其每个字符遍历过一次.设最长字符实际为k,共n个元素,则复杂度O(nk) string longestC ...