litjson插件的使用

litjson插件的使用


目錄

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

你還可以通過JsonReaderJsonWriterJson讀出和寫入。


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"}
2.
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
詩人
2
{"name":"莎士比亞","age":51,"sex":"男","info":{"逝世":"1616/4/23","job":"詩人"},"myArray":[1,2,3,"Launch!"]}
莎士比亞
51
男
JsonData object
JsonData array
Launch!

unity同樣可以拖進txt格式的文本,對其轉換和更改。public一個TextAsset,將其拖進去即可。不再舉例。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章