unity——json總結(jié)

OK,everybody,今天來記錄一下關(guān)于Json的一些知識,以及關(guān)于Json在unity中的運(yùn)用
so,什么是Json,
學(xué)過JavaScript的童鞋應(yīng)該有所了解,
Json的全稱是JavaScript Object Notation(JavaScript 對象表示法)
Json是輕量級的文本數(shù)據(jù)交換格式,類似于XML,我們可以用它來存儲數(shù)據(jù)Json獨(dú)立于語言,
雖然Json使用JavaScript語法來描述數(shù)據(jù)對象,但是Json仍然獨(dú)立于語言和平臺。
Json解析器和Json庫支持許多不同的編程語言,目前非常多的動(dòng)態(tài)編程語言都支持Json那我們來記錄一些正事:Json語法規(guī)則Json語法是JavaScript對象表示法語法的子集,
也就是說,它倆大概的類似Json語法規(guī)則如下:
1、數(shù)據(jù)在名稱/值對中
2、數(shù)據(jù)由逗號分隔
3、花括號保存對象
4、方括號保存數(shù)組
Json數(shù)據(jù)的書寫格式是:名稱/值對名稱/值對包括字段名稱(用雙引號括起來),后面跟一個(gè)冒號(:),最后就是值(用雙引號括起來),比如這樣:"name":"Make"

關(guān)于Json的值對,可以是哪些類型:數(shù)字、字符串、布爾值、數(shù)組(在方括號中)、對象(在花括號中)、null關(guān)于Json對象,Json可以有多個(gè)對象(但是要放在數(shù)組中),每個(gè)對象可以有多個(gè) 名稱/值對 ,用逗號隔開,每個(gè)對象要用花括號{}括起來,
比如:{ "name":"百度" , "URL":"www.baidu.com" }
這就是一個(gè)對象的寫法關(guān)于Json數(shù)組,需要用方括號括起來,
數(shù)組可以有多個(gè)對象,但是數(shù)組外面需要有花括號括起來,這是因?yàn)閿?shù)組也是一個(gè)對象,
比如:{ "array":[
{ "name":"百度" , "URL":"www.baidu.com" },
{ "name":"google" , "URL":"www.google.com" },
{ "name":"微博" , "URL":"www.weibo.com" }
]}
關(guān)于Json文件,Json文件的文件類型是“.json”
Json與XML的相同與不同:
相同之處:
JSON是純文本
JSON具有“自我描述性”
JSON具有層級結(jié)構(gòu)
JSON可通過JavaScript進(jìn)行解析
JSON數(shù)據(jù)可使用AJAV進(jìn)行傳輸
不同之處:
沒有結(jié)束標(biāo)簽
更短
讀寫的速度更快
能夠使用內(nèi)建的JavaScript eval()方法進(jìn)行解析
使用數(shù)組
不使用保留字
OK,JSON基礎(chǔ)語法已經(jīng)介紹完畢,下面介紹一下關(guān)于如何在unity中使用JSON,而且目前unity已經(jīng)有自帶的原生庫了JsonUtility在Unity中,有三種情況下會用到Json:
跟服務(wù)器進(jìn)行數(shù)據(jù)交互
配置文件
跟Android/iOS數(shù)據(jù)交互

其實(shí)在JsonUtility只有三個(gè)API,很簡單,序列化與反序列化,我們用到的就是這樣我直接粘一段代碼:using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class MyJson {
public string name;
public int age;
public string job;
public Interests interests;
}

[System.Serializable]
public class Interests {
public int interestsNumber;
}
public class LearnJson : MonoBehaviour {
MyJson myJson = new MyJson();
Interests _interests = new Interests();
private string _myJson_1;
void Start() {
myJson.name = "Jake";
myJson.age = 28;
myJson.job = "Programmer";
_interests.interestsNumber = 2;
myJson.interests = _interests;
SerializableJson();
DeserializableJson();
}
void SerializableJson() {
_myJson_1 = JsonUtility.ToJson(myJson);
Debug.Log("ToJson==>"+_myJson_1);
}

結(jié)果如下:

Paste_Image.png

注意:在手機(jī)上進(jìn)行解析Json的時(shí)候,我遇到了失敗的情況,無法進(jìn)行數(shù)據(jù)的保存,可能是因?yàn)槁窂降脑?,只能讀,不能寫所以,在一開始的時(shí)候,最好創(chuàng)建一個(gè)json文件,而不是通過File.Exist()去判斷,如果沒有再創(chuàng)建一個(gè),我估計(jì)的是,可能手機(jī)無法進(jìn)行創(chuàng)建json,但是可以創(chuàng)建Text。這點(diǎn)需要注意

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,638評論 18 399
  • 我的外甥,爽,高一開學(xué),在全新的環(huán)境,當(dāng)班長,當(dāng)英語班助理,還有一個(gè)樓層管理工作,軍訓(xùn)一周時(shí)間,班上唯一一個(gè)軍訓(xùn)標(biāo)...
    晚媽育兒閱讀 499評論 2 2

友情鏈接更多精彩內(nèi)容