Сериализация List Unity3D

216
22 апреля 2017, 21:37

Не получается сериализовать класс при помощи JsonUtility.ToJson(). В файле всегда пустые скобки.

Класс:

[Serializable]
public class DataModel
{
   public bool IsLevelCompleted;
   public int TopScore;
   public int LevelNumber;
}

Добавляю в List<DataModel>

gameData.Add (new DataModel ()
{
    IsLevelCompleted = true,
    LevelNumber = LevelSelector.SelectedLevel,
    TopScore = this.Score   
});
string json = JsonUtility.ToJson(gameData);
Answer 1

Для работы сериализатора Unity, согласно документации, поля действительно должны быть полями, причём public, всё правильно. Попробуйте для списка создать отдельную обёртку, так должно работать:

[Serializable]
public class DataModel
{
   public bool IsLevelCompleted;
   public int TopScore;
   public int LevelNumber;
}
[Serializable]
public class ListHolder
{
    public List<DataModel> dataModels;
}

Идея взята с этого ответа на enSO, почитайте, действительно хороший ответ.

READ ALSO
Вопрос про SortedSet и Comparer

Вопрос про SortedSet и Comparer

Есть SortedSetДля сравнения использую стандартный метод CompareTo()

245
Binding ConverterParameter={Binding &hellip;}

Binding ConverterParameter={Binding …}

Мне нужно в качестве параметра для конвертера указать Binding, но это невозможно, так как ConverterParameter не является DependencyProperty

208
Как передать переменную через GET запрос

Как передать переменную через GET запрос

Господа, помогите пожалуйста разобратьсяНужно из программы на C# передать переменную в браузерную строку таким образом: http://localhost/Projects/buttons/gett

305
The type initializer for &#39;System.Data.Entity.Migrations.DbMigrationsConfiguration`1&#39; threw an exception

The type initializer for 'System.Data.Entity.Migrations.DbMigrationsConfiguration`1' threw an exception

Доброго времени сутокПытаюсь в проекте MVC включить миграцию базы, в Package Manager Console прописываю: Enable-Migrations -ContextTypeName WebApplication1

362