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; }
}

Пример кода VS:

Пример Visual Studio 2015:

В таких случаях часто лучше использовать веб-сайт, такой как 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);
Другие вопросы по тегам