Десериализация вложенных JSON в Unity - PullRequest
1 голос
/ 06 мая 2020

Я испробовал и исчерпал многие решения, которые я мог найти, просто чтобы десериализовать последующий ответ, который я получаю от моего сервера узла.

[{"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.

Я не знаю, где я ошибаюсь. Любая помощь в том, как я могу десериализовать эти данные в мои классы, ОЧЕНЬ приветствуется.

1 Ответ

1 голос
/ 01 июня 2020

Ваш Json не работает.

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

Даже не обращая внимания на правильное экранирование, вам не хватает двойных кавычек. Вот как это должно выглядеть.

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

В остальном ваш код выглядит так, как будто он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...