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

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

от karen.wisozk , в категории: Другие , 7 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от forest , 7 месяцев назад

@karen.wisozk 

В Unity3D можно использовать встроенную библиотеку JsonUtility, чтобы сериализовывать и десериализовывать JSON и JSON-массивы.

  1. Для сериализации объекта JSON в строку используется метод JsonUtility.ToJson:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// Определение класса, соответствующего JSON-объекту
[System.Serializable]
public class MyObject
{
    public int id;
    public string name;
}

// Пример сериализации
MyObject obj = new MyObject();
obj.id = 1;
obj.name = "Example";
string jsonString = JsonUtility.ToJson(obj);


  1. Чтобы сериализовать массив JSON в строку, можно использовать простой массив или список объектов:
1
2
3
4
5
// Пример сериализации массива JSON
MyObject[] array = new MyObject[2];
array[0] = new MyObject { id = 1, name = "Example 1" };
array[1] = new MyObject { id = 2, name = "Example 2" };
string jsonArrayString = JsonUtility.ToJson(array);


  1. Для десериализации строки JSON в объект используется метод JsonUtility.FromJson:
1
2
3
// Пример десериализации
string jsonString = "{"id":1,"name":"Example"}";
MyObject obj = JsonUtility.FromJson<MyObject>(jsonString);


  1. Для десериализации строки JSON в массив можно воспользоваться методом JsonUtility.FromJson и указать тип объекта как массив:
1
2
3
// Пример десериализации массива JSON
string jsonArrayString = "[{"id":1,"name":"Example 1"},{"id":2,"name":"Example 2"}]";
MyObject[] array = JsonUtility.FromJson<MyObject[]>(jsonArrayString);


Обратите внимание, что JsonUtility имеет ограничения, такие как невозможность сериализации/десериализации полей типа List<T>, словарей или наследуемых классов. Если вам нужны более продвинутые функции сериализации/десериализации JSON, вы можете использовать сторонние библиотеки, такие как Json.NET.