在Unity中反序列化嵌套的JSON

问题描述 投票:1回答:1

我已经尝试并用尽了许多我可以找到的解决方案,因为它们只能反序列化从节点服务器获得的关注响应。

[{"treeData":"[{\"title\":\"GroupTitle\",\"nodeItemIds\":[5,1,3],\"children\":[]}] }]

我将我的课程设置如下:

[Serializable]
public class Groups
{
    public string title { get; set; }
    public string tagClass { get; set; }
    public List<string> tagIds { get; set; }
    public List<Groups> children { get; set; }
}

[Serializable]
public class ResponseData
{
    public string treeData { get; set; }
}

并且我正在尝试使用

ResponseData responseData = JsonUtility.FromJson<ResponseData>(www.downloadHandler.text);
string jsonString = Regex.Unescape(responseData.treeData);
List<Groups> groups = JsonConvert.DeserializeObject<List<Groups>>(jsonString);

但是这给了我以下错误ArgumentException: JSON must represent an object type.

我不知道我要去哪里错了。非常感谢您提供有关如何将这些数据反序列化到班级中的任何帮助。

c# json unity3d serialization
1个回答
0
投票

您的Json坏了。

[{"treeData":"[{\"title\":\"GroupTitle\",\"nodeItemIds\":[5,1,3],\"children\":[]}] }]

即使忽略正确的转义,您也会丢失双引号。这就是它的外观。

[{"treeData":"[{\"title\":\"GroupTitle\",\"nodeItemIds\":[5,1,3],\"children\":[]}]"}]

除此之外,您的代码看起来应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.