litjson插件的使用
目录
litjson插件的使用
控制台应用程序
使用 JsonMapper 类实现数据的转换
对TXT文本的更改
Unity3D
对第一个例子的改变
添加信息
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得* JSON *成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。
JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON 具有自我描述性,更易理解
可以是数字(整数或浮点数),字符串(在双引号中),逻辑值(true 或 false),数组(在中括号中),对象(在大括号中),null。
LitJSON它的特点是小、快速、易于使用。只需导入一个.dll的文件即可使用。它的源代码使用C#编写,可以通过任何.Net平台上的语言进行调用。你可以在VS上右键你的项目,点击管理NuGet程序包,搜索到它,然后安装。
或者点击这里下载。
它是解析json的插件之一,可以在C#应用程序,web程序,还有Unity3d C#脚本中使用。D
在这里简单的介绍一下在控制台应用程序和Unity3D上使用方式。
控制台应用程序
首先需要右键你的项目,添加引用,浏览你的本地文件添加LitJson.dll,然后才能导入命名空间 using LitJson;
使用 JsonMapper 类实现数据的转换
示例:
using LitJson;
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
public class JsonSample
{
public static void Main()
{
PersonToJson();
JsonToPerson();
}
public static void PersonToJson()
{
Person example = new Person();
example.Name = "William Shakespeare";//威廉·莎士比亚
example.Age = 51;
example.Birthday = new DateTime(1564, 4, 26);
string json_bill = JsonMapper.ToJson(example);
Console.WriteLine(json_bill);
}
public static void JsonToPerson()
{
string json = @"
{
""Name"" : ""Thomas More"",
""Age"" : 57,
""Birthday"" : ""02/07/1478 00:00:00""
}";
Person thomas = JsonMapper.ToObject<Person>(json);//根据Person属性转换为相应格式
Console.WriteLine("Thomas' age: {0}", thomas.Age);
}
}
运行结果为
{"Name":"William Shakespeare","Age":51,"Birthday":"04/26/1564 00:00:00"}
Thomas' age: 57
对TXT文本的更改
也可以将txt格式的文本拖进项目里,然后通过File.ReadAllText的方式打开文本,对字符转换。
JsonData data = JsonMapper.ToObject(File.ReadAllText("Skill.txt"));//你的文本名称。
foreach (JsonData item in data)
{
item["ID"] = 5;
}
JsonWriter jw = new JsonWriter();
data.ToJson(jw);//通过该方法把JsonData对象写进jsonwriter里
string json = jw.ToString();//通过该方法获得修改好的json串
Console.WriteLine(json);
File.WriteAllText("Skill.txt", json);//把新的json串保存在源文件(覆盖源文件)
SkillClass[] skill = JsonMapper.ToObject<SkillClass[]>(File.ReadAllText("Skill.txt"));
foreach (var item in skill)
{
Console.WriteLine(item);
}
Console.ReadKey();
运行前的txt
[
{"ID":2,"Name":"凤舞九天","Damage":400},
{"ID":3,"Name":"化骨绵掌","Damage":600},
{"ID":4,"Name":"不动明王","Damage":800}
]
运行结果
[{"ID":5,"Name":"\u51E4\u821E\u4E5D\u5929","Damage":400},{"ID":5,"Name":"\u5316\
u9AA8\u7EF5\u638C","Damage":600},{"ID":5,"Name":"\u4E0D\u52A8\u660E\u738B","Dama
ge":800}]
ID:5Name:凤舞九天Damage:400
ID:5Name:化骨绵掌Damage:600
ID:5Name:不动明王Damage:800
你还可以通过JsonReader和JsonWriter对Json读出和写入。
Unity3D
首先将dll文件通过Import New Asset 的方式导入到项目中,然后导入命名空间 using LitJson;
unity中的用法和控制台应用程序中的方法大同小异,将第一个例子的代码改一下即可。
对第一个例子的改变
using LitJson;
using UnityEngine;
using System.Collections;
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
/// <summary>
///需要继承MonoBehaviour才能拖进对象上调用。
// 或者不继承也不拖上去,写为静态,在其他脚本中调用此脚本的方法。
/// </summary>
public class JsonSample : MonoBehaviour
{
void Start()
{
PersonToJson();
JsonToPerson();
}
void PersonToJson()
{
Person bill = new Person();
bill.Name = "William Shakespeare";
bill.Age = 51;
bill.Birthday = new DateTime(1564, 4, 26);
string json_bill = JsonMapper.ToJson(bill);
Debug.Log(json_bill);
}
void JsonToPerson()
{
string json = @"
{
""Name"" : ""Thomas More"",
""Age"" : 57,
""Birthday"" : ""02/07/1478 00:00:00""
}";
Person thomas = JsonMapper.ToObject<Person>(json);
Debug.Log(thomas.Age);
}
}
运行结果为·
{"Name":"William Shakespeare","Age":51,"Birthday":"04/26/1564 00:00:00"}
Thomas' age: 57
再看另一个例子
添加信息
using UnityEngine;
using System.Collections;
using LitJson;
public class UseJson : MonoBehaviour
{
void Start()
{
JsonData jsonData = new JsonData();
jsonData["name"] = "莎士比亚";
jsonData["age"] = 51;
jsonData["sex"] = "男";
string strJson = jsonData.ToJson(); //转化成json格式字符串
Debug.Log(strJson);
JsonData jsonData2 = JsonMapper.ToObject(strJson); //转化成json格式数据
Debug.Log(jsonData2["name"]);
jsonData["info"] = new JsonData();
jsonData["info"]["逝世"] = "1616/4/23";
jsonData["info"]["job"] = "诗人";
strJson = jsonData.ToJson();
Debug.Log(strJson);
JsonData jsonData3 = JsonMapper.ToObject(strJson);
Debug.Log(jsonData3["info"]["phone"]);
Debug.Log(jsonData3["info"][1]);
Debug.Log(jsonData3["info"].Count); //2
JsonData data = new JsonData();
data.Add(1);
data.Add(2);
data.Add(3);
data.Add("Launch!");
jsonData["myArray"] = data;//数组添加
strJson = jsonData.ToJson();
Debug.Log(strJson);
for (int i = 0; i < jsonData.Count; i++)
{
print(jsonData[i]);
if (jsonData[i].IsArray)
{
print(jsonData[i][3]);//数组解析
}
}
}
}
运行结果
{"name":"莎士比亚","age":51,"sex":"男"}
莎士比亚
{"name":"莎士比亚","age":51,"sex":"男","info":{"逝世":"1616/4/23","job":"诗人"}}
Null
诗人
{"name":"莎士比亚","age":51,"sex":"男","info":{"逝世":"1616/4/23","job":"诗人"},"myArray":[1,2,3,"Launch!"]}
莎士比亚
51
男
JsonData object
JsonData array
Launch!
unity同样可以拖进txt格式的文本,对其转换和更改。public一个TextAsset,将其拖进去即可。不再举例。
litjson插件的使用相关推荐
- 【C#公共帮助类】10年代码,最全的系统帮助类
这个帮助类主要包含:对象转换处理 .分割字符串.截取字符串.删除最后结尾的一个逗号. 删除最后结尾的指定字符后的字符. 生成指定长度的字符串. 生成日期随机码. 生成随机字母或数.字 截取字符长度. ...
- Unity项目进阶之保卫萝卜
框架设计 UMl图 具体实现 由于是2D游戏,所以Main Camera的Clear Flags设置为Solid Color即可 导入的包报错解决方案 File–>Build Settings– ...
- 完整的系统帮助类Utils
//来源:http://www.cnblogs.com/yuangang/p/5477324.html using System; using System.Collections.Generic; ...
- Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据)
Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据) 目录 Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以 ...
- unity使用百度AI实现人脸融合
准备工作:前往百度AI网页注册账号,百度AI开放平台-全球领先的人工智能服务平台 在开放能力平台,能找到想要的功能介绍,然后要创建一个应用,需要用到ak和sk,百度AI开发里边介绍比较清楚,这里就不赘 ...
- Unity | Unity发送Http请求并处理得到的Json数据
说明 Unity中UnityWebRequest和WWW都可以实现HTTP请求,这里使用的是UnityWebRequest发送Post请求. UnityAPI-UnityWebRequest 架构 U ...
- Unity C# 读取安卓persistentDataPath目录中的json文件
一.声明需要用到的命名空间 using LitJson; //用于读取Json文件 using System.IO; //用于声明StreamReader类 ...
- 阅读分析程序源代码的一些方法(转载整理)
前言 最近项目组中有较多新成员需要阅读熟悉项目中已有的程序代码,好多成员一时间对项目代码摸不清头绪,这里在网络上收集了相关源代码阅读分析的一些方法,整理于此. 正文 摘自(繁体中文Traditiona ...
- Unity3D的Json篇:LitJson.dll插件
网址:百度网盘 请输入提取码百度网盘为您提供文件的网络备份.同步和分享服务.空间大.速度快.安全稳固,支持教育网加速,支持手机端.注册使用百度网盘即可享受免费存储空间https://pan.baidu ...
最新文章
- 都说过了,它跟蛇没关系
- WCF后续之旅(16): 消息是如何分发到Endpoint的--消息筛选(Message Filter)
- 如果知道两点的经纬度 如何算两点之间的距离
- c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)
- 深度信念网络Deep Belief Networks资料汇总
- linux ulimit 永久生效设置方法
- echarts 折线图 html模板,设置ECharts折线图的提示框
- 学习日记之工厂方法模式和Effective C++
- “小程序”的最佳入口位置--关于微信小程序的思考笔记
- DXL应用:向设计元素中添加设计元素
- Vue / axios / props 调用后端接口数据并渲染到页面
- java二维数组货柜,装箱布局三维可视化控件开发sup*/sup
- verilog之分频大全
- (十七)QT生成PDF文件
- 关闭计算机小键盘快捷键,笔记本小键盘怎么关 关闭小键盘的方法【详解】
- Fastreport.Net用户手册(七):Bands
- what is vmagent
- 解决selenium控制webdriver总是被网站检测的问题
- 常用电子元器件知识总结-贴片式
- 大众继续深耕SUV市场:5款新车型先于上海车展登场,ID. ROOMZZ成点睛之笔...