Unity Json De/ сериализация вложенных данных
Помогите мне, пожалуйста! Я пытаюсь прочитать большой кусок данных из файла JSON, и большая часть данных представляет собой список списка! Я не знаю, как его десериализовать!
Поэтому я нашел это руководство и сделал, как он, используя JsonFX http://www.raybarrera.com/2014/05/18/json-deserialization-using-unity-and-jsonfx/
это помогло мне десериализовать всю остальную информацию, которая мне нужна, кроме списка.
Ниже приведен пример того, как может выглядеть файл json, имейте в виду, что я упростил его в десять раз, потому что это огромный набор данных!
{
"name": "Croissant",
"price": 60,
"foo": [{
"poo": [1, 2]
},
{
"poo": [3, 4]
}
],
"importantdata": [
[
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
[
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
]
}
Так как я могу превратить это в объект и получить данные, которые мне нужны? myObject.importantdata[n]
?
Если мне нужна дополнительная информация, я рад поделиться, извините, я новичок здесь!
2 ответа
Вы можете сгенерировать класс POCO, используя пример данных, попробуйте http://json2csharp.com/, который является онлайн-инструментом. Visual Studio 2015 и далее VS код также имеет аналогичный пункт меню / команду для достижения этой цели.
- Вставьте туда свою строку JSON
- Вы получите все классы POCO, которые вам нужны.
Автоматически сгенерированный результат для вашего случая:
public class Foo
{
public List<int> poo { get; set; }
}
public class RootObject
{
public string name { get; set; }
public int price { get; set; }
public List<Foo> foo { get; set; }
public List<List<int>> importantdata { get; set; }
}
В таких случаях часто лучше использовать веб-сайт, такой как http://json2csharp.com/
Вставьте свой JSON, нажмите "Генерировать", и он выдаст вам список классов C#, которые соответствуют структуре вашего JSON.
В этом случае это дает мне
public class Foo
{
public List<int> poo { get; set; }
}
public class RootObject
{
public string name { get; set; }
public int price { get; set; }
public List<Foo> foo { get; set; }
public List<List<int>> importantdata { get; set; }
}
Затем я лично использую NewtonSofts Json.net для преобразования в / из JSON, например: http://www.newtonsoft.com/json
using Newtonsoft.Json;
string json = File.ReadAllText("path\to\file.json");
RootObject myRootObject = JsonConvert.DeserializeObject<RootObject>(json);