2017-06-29 32 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