Unity:将json分配给List

时间:2017-06-29 12:33:53

标签: c# json unity3d litjson

JSON下面是WWW GET结果

{
    "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());

2 个答案:

答案 0 :(得分:0)

这意味着您要将GET的Result对象反序列化为其自己的类型因此,您需要使用Newtonsoft Library来帮助您反序列化该对象。 在Package Manger Console中获取库编写以下命令

  

Install-Package Newtonsoft.Json

或者直接从NuGet Package Manger下载。 然后使用以下代码反序列化您已经

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

尝试将其添加到Unity:

创建一个文件夹:Assets / Plugins,其中放置* .dll文件并将其添加为参考。

要添加引用,请在Visual Studio的“解决方案资源管理器”中以及“项目”&gt;下突出显示分析器。添加引用,您可以通过浏览找到位于Assets / Plugin中的* .dll文件。

或者 试试这个命令

  

安装包Unity.Newtonsoft.Json -Version 7.0.0

Unity.Newtonsoft | NuGut

答案 1 :(得分:-1)

我在Unity中解析JSON数组时有类似的问题,你不能用JsonUtility解析JSON数组,你必须使用外部库,SimpleJSON为我工作,只需将.cs文件粘贴到你的脚本文件夹中。您可以从此处SimpleJSON下载JSON库。向下滚动到SimpleJSON.cs部分,将所有内容复制到脚本文件夹中的新.cs文件,并使用using SimpleJSON; var jsonObject = JSON.Parse(response)解析响应,您就可以开始了!您可以将其作为数组访问或将其分配给监视列表。