Json.net в Unity для сериализации - PullRequest
       1

Json.net в Unity для сериализации

0 голосов
/ 09 февраля 2019

Я искал лучшую библиотеку json для моего проекта Unity.Мне нужно сериализовать, используя другое имя, отличное от имени свойства, десериализовать словари, содержащие произвольный пользовательский контент, и игнорировать пустые поля при сериализации.Я добавил .dll (net20) для Json.NET v12.0.1 в свой проект Unity, и, похоже, он отлично работает в моем (ограниченном) тестировании.

public class Foo
{
    [JsonProperty("baz", NullValueHandling = NullValueHandling.Ignore)]
    public Bar Baz{ get; set; }

    [JsonProperty("quux", NullValueHandling = NullValueHandling.Ignore)]
    public Qux Quux{ get; set; }
}

public class Corge: Dictionary<string, JObject>
{
    //whatever the user wants to send will come back from the REST call
}

public void OnResponse(string responseJson)
{
    var corge = JsonConvert.DeserializeObject<Corge>(responseJson);
    var name = corge["name"].ToString();
}

Прежде чем полностью реорганизовать мой проект,Существуют ли какие-либо ограничения на использование Json.NET в Unity и публикацию на разных платформах?Будет ли использование dynamic работать лучше, чем расширение Dictionary?

Ответы [ 3 ]

0 голосов
/ 10 мая 2019

В продолжение этого вопроса после реализации библиотеки Json.NET возникли проблемы с выполнением запросов REST на платформе iOS.

Exception: System.NotSupportedException: System.Reflection.Emit.DynamicMethod::.ctor
at System.Reflection.Emit.DynamicMethod..ctor (System.String name, System.Type returnType, System.Type[] parameterTypes, System.Type owner, System.Boolean skipVisibility)

В итоге мы перешли на Json.NET для Unity , который, кажется, работает нормально.

0 голосов
/ 13 мая 2019

Обновленный IBM Watson for Unity, получил ту же ошибку.Выяснилось, что IBM использует Newtonsoft JSON.Net.Переключился на Json.NET для Unity и все, по крайней мере, работает.

0 голосов
/ 09 февраля 2019
  1. Нет, Json.NET в настоящее время работает на всех платформах Unity.
  2. Я против использования динамических функций для вашей собственной структуры данных.Используйте его только для десериализации данных из внешнего источника (API, другие языки и т. Д.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...