Unity使用JSONObject解析json資料

  • 0
最近又要用到Json跟網路的功能,來做連線程式,於是找了一下Unity如何處理Json的方法。

我使用JSONObject來parser的函式庫,可以自行到Asset Store找下來安裝即可,免費的喔!

簡單講一下怎麼操作,分為Encoding與Decoding

Encoding
string ourPostData = "{\"Name\":\"Awei\"}"; 
假設你有一串Json的字串,如何轉成JSONObject呢?
JSONObject encodingObject = new JSONObject (JSONObject.Type.OBJECT);
encodingObject.AddField ("ID",1);
encodingObject.AddField ("Name", "Awei");
encodingObject.AddField ("Age", "18");
print ("Hello : " + q["Name"]);
執行結果
Hello : Awei

說明

第1行宣告1個JSONObject的物件,宣告同時,指定是一個空物件。
第2~4行把值塞入空物件,可以塞數值、字串或是陣列。
第5行將值讀出。




Decoding
string ourPostData = "{\"Name\":\"Awei\"}"; 
假設你有一串Json的字串,如何轉成JSONObject呢?
JSONObject output = new JSONObject(ourPostData);
print (output["Name"]);
執行結果
Awei

說明

第1行就是宣告1個JSONObject的物件,宣告同時,把json的字串帶入。
第2行就是印出output的物件,宣告的物件是1個陣列,可以帶Key的名字(ex:Name, Age),或是指定索引值(ex:0,1,2),取得該陣列的值。


用法大概是以上這樣,我是拿來做網路傳資料使用,所以在送出時,我需要把資料做Encoding然後處理成byte[]給網路去傳送,傳送的時候,直接在jsonobject後面加上.ToString(),即可轉成字串,丟給網路處理了;而接收的時候,就是使用Decoding將回傳的資料做解譯。

NGUI ScrollView加Button後不能拖拉的問題

在NGUI的ScrollView中,如果你的ScrollView有設定可以拖拉的話,當你又加入了Button到ScrollView,這時候你會發現,Button可以按,但ScrollView卻不能Drag了。

原因是BoxCollider,當我把Button的BoxCollider關閉就正常了,滿奇怪的原因。

而我目前解決的方法是在Button裡在加入UIDrag Scroll View這個Script,然後把ScrollView設定好,此時,Button可按又可拖拉囉!