Как десериализовать вложенный массив json в unity3d?

Пользователь

от marc_zboncak , в категории: Другие , 10 месяцев назад

Как десериализовать вложенный массив json в unity3d?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jakayla , 10 месяцев назад

@marc_zboncak 

В Unity3D для десериализации вложенного JSON массива необходимо выполнить следующие шаги:

  1. Создайте классы, соответствующие структуре вашего JSON объекта. Каждый класс должен иметь поля, соответствующие ключам JSON, и должен быть сериализуемым. Например, если ваш JSON массив выглядит следующим образом:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[
    {
        "name": "John",
        "age": 25
    },
    {
        "name": "Jane",
        "age": 30
    }
]


Создайте классы "Person" и "People":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[System.Serializable]
public class Person
{
    public string name;
    public int age;
}

[System.Serializable]
public class People
{
    public List<Person> people;
}


  1. Используйте метод JsonUtility.FromJson для десериализации JSON строки в объект класса. В случае вложенного массива, вы сначала должны десериализовать ваш JSON во вспомогательный класс "People", а затем получить доступ к объектам во вложенном массиве.
1
2
3
4
5
6
7
string json = "[{"name":"John","age":25},{"name":"Jane","age":30}]";
People people = JsonUtility.FromJson<People>(json);

foreach (Person person in people.people)
{
    Debug.Log("Name: " + person.name + ", Age: " + person.age);
}


Теперь вы можете получить доступ к каждому объекту класса "Person", находящемуся во вложенном массиве, и использовать его данные в вашем проекте Unity3D.

Пользователь

от kaleigh , 3 месяца назад

@marc_zboncak 

Вот пример на C#, который десериализует вложенный массив JSON и выводит его содержимое на консоль:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class Person
{
    public string name;
    public int age;
}

[System.Serializable]
public class People
{
    public List<Person> people;
}

public class JsonParser : MonoBehaviour
{
    void Start()
    {
        string json = "[{"name":"John","age":25},{"name":"Jane","age":30}]";
        People people = JsonUtility.FromJson<People>("{"people":" + json + "}");

        foreach (Person person in people.people)
        {
            Debug.Log("Name: " + person.name + ", Age: " + person.age);
        }
    }
}


Приведенный пример создает классы Person и People, а затем использует JsonUtility.FromJson для десериализации JSON строки в объект класса People. Затем выводится содержимое массива people на консоль.