json,一種非常流行的數據格式。json最大的功勞在於取代了xml,做過職業採集的人大概會明白我說的是什麼意思,哈哈哈。
在遊戲的存檔、更新、數據傳輸過程中都需要一個高效、易讀、緊湊的數據格式。從各種角度來說json都是最好的選擇。在unity中我們可以使用內置的JsonUtility方法來輕鬆的實現json字符串與c#對象的互轉。
創建json對象結構
使用Serializable語義可以使類可以被序列化。多個類層級調用,就相當於json的多層數據。下面代碼定義了一個2層的json數據結構
// 二層json數據
[Serializable]//序列化
public class AssetbundleFile
{
public string name;
public string url;
}
// 頂層json數據
[Serializable]//序列化
public class AssetbundleResource
{
public string version;
public bool updating;
public AssetbundleFile[] assetbundleFiles;
}
以上代碼定義的json結構實際上就是這樣的:
{
"version":"",
"updating":false,
"assetbundleFiles":[
{
"name":"","url":""
}
]
...
}
創建json對象, 並填充數據
void Main(){
//
AssetbundleResource assetbundleResource = new AssetbundleResource();
assetbundleResource.assetbundleFiles = new AssetbundleFile[]{
new AssetbundleFile(){
name = "file1",
url = "111"
},
new AssetbundleFile(){
name = "file2",
url = "222"
}
};
json對象轉json數據字符串
// c#對象轉json字符串
string jsonStr = JsonUtility.ToJson(assetbundleResource);
Debug.Log("json字符串:"+ jsonStr);
json數據字符串轉json對象
// json字符串轉c#對象
AssetbundleResource _assetbundleResource = JsonUtility.FromJson<AssetbundleResource>(jsonStr);
Debug.Log("數據0的name數據爲:" + _assetbundleResource.assetbundleFiles[0].name);