Json的介紹可以看這兩篇文章:

1.一篇文章搞定JSON

2.瞭解JSON格式(這篇文章有鎖左鍵和右鍵)

 

 

在這邊我只處理JSON的「資料存入」和「讀取」

使用LitJson來處理Json的資料(下載點)

點選dll下載

 

 

請將下載的dll檔放在專案的Plugins資料夾內(沒有該資料夾就自行新增)

 

 

然後新增一個 C# script 並命名為JsonPractice

開始撰寫程式碼:


 using LitJson;
using System.IO;
using System.Text;
using UnityEngine;

public class JsonPractice : MonoBehaviour
{
    private string path = @"D:\test.json";//輸出的檔案路徑和檔名,其實副檔名可隨意

    void OnGUI()
    {
        if (GUILayout.Button("WriteJson") == true)
        {
            outputJsonFile(writeJson(new string[] { "Name", "Age" }, new string[] { "Yang", "21" }));//編寫Json檔並輸出檔案
        }
        if (GUILayout.Button("ReadJson") == true)
        {
            readJson(loadJsonFile());//載入Json檔並讀取內部資訊
        }
    }

    private string writeJson(string[] key, string[] value)
    {
        if (key.Length != value.Length)
        {
            throw new System.Exception("key.Length != value.Length");
        }

        StringBuilder sb = new StringBuilder();//若字串會被修改,則建議使用StringBuilder,速度比String還快。(可以自行google搜尋這兩者的差異)
        JsonWriter jw = new JsonWriter(sb);//資料將會寫在sb內

        jw.WriteArrayStart();//寫入"["到sb內
        jw.WriteObjectStart();//寫入"{"到sb內
        for (int i=0; i<key.Length; i++)
        {
            jw.WritePropertyName(key[i]);
            jw.Write(value[i]);
        }
        jw.WriteObjectEnd();//寫入"}"到sb內
        jw.WriteArrayEnd();//寫入"]"到sb內

        return sb.ToString();
    }

    private void readJson(string jsonStr)
    {
        JsonReader jr = new JsonReader(jsonStr.ToString());

        while(jr.Read() == true)//連續讀取資料直到讀取完畢
        {
            if (jr.Value != null)//若有資料,則開始列印
            {
                Debug.Log(jr.Value);//列印出讀取到的資料
            }
        }
    }

    private void outputJsonFile(string sb)
    {
        using (StreamWriter sw = new StreamWriter(path, true))//將資料寫入,若原先已有資料則寫在原先資料的後面
        {
            sw.WriteLine(sb);//將資料寫入
        }
    }

    private string loadJsonFile()
    {
        StringBuilder sbJson = new StringBuilder();//用來儲存讀入的Json內容
        using (StreamReader sr = new StreamReader(path))
        {
            sbJson.Append(sr.ReadToEnd());//一次性將資料全部讀入
        }

        return sbJson.ToString();
    }
}


 

然後我將其拖曳到Camera上

 

執行!

 

先按下WriteJson產生並寫入檔案

 

此時到指定路徑看看,可以發現已經產生了Json檔案(可用記事本開啟看看內部資訊)

 

 

若是按下ReadJson,則可讀取內部資訊

文章標籤
全站熱搜
創作者介紹
創作者 Yang 的頭像
Yang

Yang的部落格(轉貼文章請註記來源)

Yang 發表在 痞客邦 留言(1) 人氣(3,295)