Json數(shù)據(jù)解析在Unity3d中的應(yīng)用

最近做項目過程中因為Json文件名寫錯了一個字母Unity報錯,找錯誤找到半夜,當(dāng)時為了驗錯,寫了一個小Demo,正好借此總結(jié)一下Json.

1.什么是Json

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式罢低。它基于ECMAScript的一個子集问慎。 JSON采用完全獨立于語言的文本格式庸队,但是也使用了類似于C語言家族的習(xí)慣(包括C诫惭、C++、C#择吊、Java扰藕、JavaScript、Perl校摩、Python等)看峻。這些特性使JSON成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫衙吩,同時也易于機器解析和生成(一般用于提升網(wǎng)絡(luò)傳輸速率)互妓。

2.JSON 語法規(guī)則

  • 數(shù)據(jù)在鍵值對中
  • 數(shù)據(jù)由逗號分隔
  • 花括號保存對象
  • 方括號保存數(shù)組

3.Json的結(jié)構(gòu)

  • 對象:對象在js中表示為“{}”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key:value,key:value,...}的鍵值對的結(jié)構(gòu)坤塞,在面向?qū)ο蟮恼Z言中冯勉,key為對象的屬性,value為對應(yīng)的屬性值摹芙,所以很容易理解灼狰,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是 數(shù)字浮禾、字符串交胚、數(shù)組、對象幾種盈电。
  • 數(shù)組:數(shù)組在js中是中括號“[]”括起來的內(nèi)容蝴簇,數(shù)據(jù)結(jié)構(gòu)為 ["java","javascript","vb",...],取值方式和所有語言中一樣匆帚,使用索引獲取熬词,字段值的類型可以是 數(shù)字、字符串吸重、數(shù)組互拾、對象幾種。

4.Json在Unity3d中的使用

  • JsonUtility:JsonUtility是Untiy5.3后新增的內(nèi)容,有時會出現(xiàn)莫名其妙的錯誤:
    JsonUtility.FromJson():把json字符串轉(zhuǎn)成對象.
    JsonUtility.ToJson():把對象轉(zhuǎn)成json字符串.

  • ** LitJson**:LitJson是一個Json的開源項目,這個比較穩(wěn)定,推薦使用:
    JsonMapper.ToObject():把json字符串轉(zhuǎn)成對象.
    JsonMapper.ToJson():把對象轉(zhuǎn)成json字符串.
    官網(wǎng)下載:http://www.json.org/json-zh.html

    1.png

    放到Unity3d中的Plugin文件夾內(nèi)
    2.png

    使用的話要注意引入命名空間

3.png

5.上代碼:

純數(shù)組的Json數(shù)據(jù)比較簡單,在這個Demo中Json數(shù)據(jù)是一個對象,對象內(nèi)有一個數(shù)組.分別需要用到一個Json對象模型(JsonObjectModel)和一個Json數(shù)組模型(JsonArrayModel)來接收這兩種Json數(shù)據(jù):

  • Json源文件
{
  "infoList": [
    {
      "panelTypeString": "ItemMessage",
      "path": "UIPanel/ItemMessagePanel"
    },
    {
      "panelTypeString": "Knapsack",
      "path": "UIPanel/KnapsackPanel"
    },
    {
      "panelTypeString": "MainMenu",
      "path": "UIPanel/MainMenuPanel"
    },
    {
      "panelTypeString": "Shop",
      "path": "UIPanel/ShopPanel"
    },
    {
      "panelTypeString": "Skill",
      "path": "UIPanel/SkillPanel"
    },
    {
      "panelTypeString": "System",
      "path": "UIPanel/SystemPanel"
    },
    {
      "panelTypeString": "Task",
      "path": "UIPanel/TaskPanel"
    }
  ]
}
  • JsonObjectModel:Json對象模型
public class JsonObjectModel 
{
    //JsonArrayModel類型的列表
    public List<JsonArrayModel> infoList;
    
}
  • JsonArrayModel:Json數(shù)組模型
public class JsonArrayModel
{
    //對應(yīng)Json中屬性 名字要一樣
    public string panelTypeString;
    public string path;
}
  • JsonDeserialize:Json解析程序,掛在場景中JsonManager上
public class JsonDeserialize : MonoBehaviour
{  
    void Start( )
    {
         //獲取Json文件
        TextAsset jsonData = Resources.Load<TextAsset>("JsonData");

        JsonObjectModel jsonObject = JsonMapper.ToObject<JsonObjectModel>(jsonData.text);

        foreach (var info in  jsonObject.infoList)
        {
            Debug.Log(info.panelTypeString+" "+info.path);
        }

    }
}
  • 輸出結(jié)果:


    5.png

6.Demo源代碼

鏈接:http://pan.baidu.com/s/1jHVP9m2 密碼:e9h8

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚎幸,一起剝皮案震驚了整個濱河市颜矿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鞭铆,老刑警劉巖或衡,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焦影,死亡現(xiàn)場離奇詭異,居然都是意外死亡封断,警方通過查閱死者的電腦和手機斯辰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坡疼,“玉大人彬呻,你說我怎么就攤上這事”澹” “怎么了闸氮?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長教沾。 經(jīng)常有香客問我蒲跨,道長,這世上最難降的妖魔是什么授翻? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任或悲,我火速辦了婚禮,結(jié)果婚禮上堪唐,老公的妹妹穿的比我還像新娘巡语。我一直安慰自己,他們只是感情好淮菠,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布男公。 她就那樣靜靜地躺著,像睡著了一般合陵。 火紅的嫁衣襯著肌膚如雪枢赔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天曙寡,我揣著相機與錄音糠爬,去河邊找鬼寇荧。 笑死举庶,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揩抡。 我是一名探鬼主播户侥,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峦嗤!你這毒婦竟也來了蕊唐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤烁设,失蹤者是張志新(化名)和其女友劉穎替梨,沒想到半個月后钓试,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡副瀑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年弓熏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糠睡。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挽鞠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狈孔,到底是詐尸還是另有隱情信认,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布均抽,位于F島的核電站嫁赏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏油挥。R本人自食惡果不足惜橄教,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喘漏。 院中可真熱鬧护蝶,春花似錦、人聲如沸翩迈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽负饲。三九已至堤魁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間返十,已是汗流浹背妥泉。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洞坑,地道東北人盲链。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像迟杂,于是被迫代替她去往敵國和親刽沾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法排拷,類相關(guān)的語法侧漓,內(nèi)部類的語法,繼承相關(guān)的語法监氢,異常的語法布蔗,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 參考基礎(chǔ)教程的整理藤违,方便記憶 一、Object對象 (O大寫) 所有其他對象都繼承自這個對象纵揍。Object本身也是...
    Viaphlyn閱讀 2,320評論 0 0
  • 一般來說骡男,我會帶著耳機淆游,聽著最新下載中國新歌聲的音樂,讓自己沉淀半個小時隔盛,慢慢地讓感覺全身暢行犹菱,讓自己的思緒飄到遠(yuǎn)...
    梁慕晨閱讀 386評論 0 0
  • 節(jié)選自《演講的本質(zhì)》 R:(Reading,閱讀一個原文片段) 請記住無論是非正式的談話中吮炕,還是正式的演講中腊脱,你應(yīng)...
    予含閱讀 632評論 0 0
  • 前些天陕凹,姐姐家的小女兒來家里玩。她用奶聲奶氣的聲音說:“這個世界上鳄炉,跟我最親的人是我的媽媽杜耙。”大家問她:“...
    whxia閱讀 144評論 0 0