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,将其拖进去即可。不再举例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值