2017-06-29 22 views
-1

下面JSON是WWW GET結果統一:指定JSON列出

{ 
    "status":200, 
    "watchlist":[ 
     { 
      "Category":"Movie", 
      "ShowList":[ 
       { 
        "id":"59534a851339762f38e16ad7", 
        "Name":"Play zombie tonight", 
        "Description":"descblablabla", 
        "IMDB":1, 
        "Tag":[ 
         "horror", 
         "comedy" 
        ], 
        "Picture":{ 
         "id":"59534a8b1339762f38e16b6d", 
         "Url":"imgurlbla", 
         "DisplayOrder":0 
        } 
       } 
      ] 
     }, 
     { 
      "Category":"Variety", 
      "ShowList":[ 
       { 
        "id":"59532bf51339742f380d4cb1", 
        "Name":"Yearning for life", 
        "Description":"descblablabla", 
        "IMDB":1, 
        "Tag":[ 
         "reality show" 
        ], 
        "Picture":{ 
         "id":"59532bfb1339742f380d4d3a", 
         "Url":"imgurlbla", 
         "DisplayOrder":0 
        } 
       } 
      ] 
     } 
    ] 
} 

我想結果分配給List<>,所以我可以很容易地在WatchList訪問值。以下是我試過的代碼。

List<WatchList> viewitemlist = JsonUtility.ToJson (www.text); 

我也嘗試了所謂的LitJSON庫:

string json = www.text; 
JsonData jsonObject = JsonMapper.ToObject(json); 
List<On360WatchList> viewitemlist = 
JsonMapper.ToObject<List<On360WatchList>> (jsonObject ["watchlist"].ToJson()); 
+0

順便說一句,這甚至不是JSON數組。粘貼你的代碼[在這裏](http://json2csharp.com/),你將得到正確的json數據。 'RootObject viewObj = JsonUtility.ToJson(www.text);' – Programmer

+0

@編程器我需要用你在上一個問題中回答的例子嗎?看到我找不到任何'List <>的例子' –

+0

json甚至不是一個列表或數組。你讀過我的第一條評論嗎?請閱讀。 – Programmer

回答

-1

我也有類似的問題,解析一個團結JSON數組時,你不能解析JSON陣列JsonUtility,您必須使用外部庫,SimpleJSON爲我工作,只需將.cs文件粘貼到腳本文件夾中即可。您可以從這裏下載SimpleJSON的JSON庫。向下滾動到SimpleJSON.cs部分,將所有內容複製到腳本文件夾中的新.cs文件中,並使用using SimpleJSON; var jsonObject = JSON.Parse(response)解析響應,並且您很好!您可以將其作爲數組訪問或將其分配給監視列表。

+0

必須'使用SimpleJSON;'> –

+0

是啊!對不起,我錯過了! –

+0

對不起,您**不必**必須使用外部庫json數組。 – Programmer

0

這意味着你要對GET的結果對象序列化到了自己的類型,因此,你需要使用Newtonsoft庫可幫助您反序列化對象。 要獲得在包管理器控制檯庫編寫如下命令

安裝,包裝Newtonsoft.Json

或者esily從NuGet包管理器下載它。 然後使用下面的代碼反序列化,你已經

string TargetObject = YourObject; 
List<WatchList> Wl = JsonConvert.DeserializeObject<List<WatchList>>(TargetObject); 

對象試試這個將它添加到統一:

使文件夾:資產/插件,你把* .dll文件,並添加它作爲參考。

要添加一個引用您突出Visual Studio和下項目在Solution Explorer中的分析儀>添加引用您可以通過瀏覽找到它位於資產/插件的* .dll文件。

或者 嘗試這個命令

安裝,包裝Unity.Newtonsoft.Json -Version 7.0.0

Unity.Newtonsoft | NuGut

+0

可以Unity安裝Newtonsoft.JSON ?? –

+0

@ImHappy我編輯了答案,檢查出來並告訴我你得到了什麼 – AlameerAshraf