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)方法获得对应 ...
随机推荐
- Linux测试环境搭建apache+mysql+php
Linux Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel \r on an \m Apache +Mysql+php 搭建准 ...
- sonar 的使用
1.依赖: <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-ma ...
- 记一次 .net core publish 之后找不到视图文件的问题
周末将VS从15.3 升级到15.5 ,之后又将VS版本由社区版,升级为企业版. 于是问题来了: 项目publish 之后找不到视图文件了??? 问题很是蛋疼,后来仔细想了一下,也没有动什么东西.查看 ...
- aws代理
ssh -i ~/.ssh/seoul-notification-dev.pem ec2-user@52.79.58.125ssh -CqTnN -D localhost:7080 -i ~/. ...
- 323. Number of Connected Components in an Undirected Graph按照线段添加的并查集
[抄题]: Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of n ...
- C语言Web service编程
一.简介 Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用 ...
- 从cookie中取值$.cookie()
从cookie中取值: var userid = $.cookie("remoteuserid");例子: function delUser() { var table = ...
- KbmMW 4.40.00 正式版发布
经过快3个月的测试,kbmmw 4.40 正式版终于在圣诞节前发布了. We are happy to announce the availability of a new kbmMW release ...
- CoreText
[CoreText] Core Text is designed for development of higher-level text-handling frameworks. General ...
- android studio使用真机测试时点击Debug调试模式时报Error running app:No target device found,点击运行模式却是启动正常的
原因是adb没检测到设备(包括真机和虚拟机). 在Terminal执行adb devices命令,查看有没有连接到的设备. 如果没有设备,确认虚拟机是否正确打开,真机是否连接打开USB调试并安装驱动. ...