目录

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插件的使用相关推荐

  1. 【C#公共帮助类】10年代码,最全的系统帮助类

    这个帮助类主要包含:对象转换处理 .分割字符串.截取字符串.删除最后结尾的一个逗号. 删除最后结尾的指定字符后的字符. 生成指定长度的字符串. 生成日期随机码. 生成随机字母或数.字 截取字符长度. ...

  2. Unity项目进阶之保卫萝卜

    框架设计 UMl图 具体实现 由于是2D游戏,所以Main Camera的Clear Flags设置为Solid Color即可 导入的包报错解决方案 File–>Build Settings– ...

  3. 完整的系统帮助类Utils

    //来源:http://www.cnblogs.com/yuangang/p/5477324.html using System; using System.Collections.Generic; ...

  4. Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据)

    Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据) 目录 Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以 ...

  5. unity使用百度AI实现人脸融合

    准备工作:前往百度AI网页注册账号,百度AI开放平台-全球领先的人工智能服务平台 在开放能力平台,能找到想要的功能介绍,然后要创建一个应用,需要用到ak和sk,百度AI开发里边介绍比较清楚,这里就不赘 ...

  6. Unity | Unity发送Http请求并处理得到的Json数据

    说明 Unity中UnityWebRequest和WWW都可以实现HTTP请求,这里使用的是UnityWebRequest发送Post请求. UnityAPI-UnityWebRequest 架构 U ...

  7. Unity C# 读取安卓persistentDataPath目录中的json文件

    一.声明需要用到的命名空间 using LitJson;       //用于读取Json文件 using System.IO;  //用于声明StreamReader类               ...

  8. 阅读分析程序源代码的一些方法(转载整理)

    前言 最近项目组中有较多新成员需要阅读熟悉项目中已有的程序代码,好多成员一时间对项目代码摸不清头绪,这里在网络上收集了相关源代码阅读分析的一些方法,整理于此. 正文 摘自(繁体中文Traditiona ...

  9. Unity3D的Json篇:LitJson.dll插件

    网址:百度网盘 请输入提取码百度网盘为您提供文件的网络备份.同步和分享服务.空间大.速度快.安全稳固,支持教育网加速,支持手机端.注册使用百度网盘即可享受免费存储空间https://pan.baidu ...

最新文章

  1. 都说过了,它跟蛇没关系
  2. WCF后续之旅(16): 消息是如何分发到Endpoint的--消息筛选(Message Filter)
  3. 如果知道两点的经纬度 如何算两点之间的距离
  4. c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)
  5. 深度信念网络Deep Belief Networks资料汇总
  6. linux ulimit 永久生效设置方法
  7. echarts 折线图 html模板,设置ECharts折线图的提示框
  8. 学习日记之工厂方法模式和Effective C++
  9. “小程序”的最佳入口位置--关于微信小程序的思考笔记
  10. DXL应用:向设计元素中添加设计元素
  11. Vue / axios / props 调用后端接口数据并渲染到页面
  12. java二维数组货柜,装箱布局三维可视化控件开发sup*/sup
  13. verilog之分频大全
  14. (十七)QT生成PDF文件
  15. 关闭计算机小键盘快捷键,笔记本小键盘怎么关 关闭小键盘的方法【详解】
  16. Fastreport.Net用户手册(七):Bands
  17. what is vmagent
  18. 解决selenium控制webdriver总是被网站检测的问题
  19. 常用电子元器件知识总结-贴片式
  20. 大众继续深耕SUV市场:5款新车型先于上海车展登场,ID. ROOMZZ成点睛之笔...

热门文章

  1. 如何把html和域名绑定,手把手教你解析和绑定域名
  2. 余承东再会张近东 战略合作升级点燃818第一把火
  3. 微服务微应用的安全测试_如何降低微服务测试成本?经验之谈
  4. 5月23日国内主流平台数字藏品NFT发售日报
  5. JAVA 实现数据对比
  6. SpringMVC——REST风格
  7. webpack的面试题(吐血整理)
  8. Exoplayer+Exomedia打造自定义视频播放器
  9. 【华为云原生入门级认证】第 2 章 云原生基础设施之容器技术
  10. 通达信接口编程是什么?