2014-01-25 3 views
1

Я не могу понять, как получить Newtonsoft.Json сериализовать этот список:список Serialize сложных объектов в JSON

var player = new List<ISprite> 
    { 
     new Sprite(head, position), 
     new Sprite(torso, position), 
     new Sprite(legs, position) 
    }; 

fileParser.Write("save.json", player); 

Sprite конструктор принимает два параметра: первый это имя актива и второй - вектор. FileParser.Write определяется как:

public void Write<T>(string fileName, T data) 
{ 
    if (string.IsNullOrEmpty(fileName)) 
    { 
     throw new ArgumentNullException(); 
    } 

    var json = JsonConvert.SerializeObject(data); 

    File.WriteAllText(fileName, json); 
} 

создан файл, но результат всегда массив пустых объектов:

[{},{},{}] 

Что я здесь делаю неправильно?

+3

Где находится определение * Sprite *? Имеет ли это * общедоступное свойство/поле? –

+0

Я не понимал, что они должны быть публичными, дух. Хотя я бы предпочел не раскрывать все свойства класса 'Sprite'. –

+0

Затем добавьте атрибут '[JsonProperty]' в приватные поля, которые вы хотите сериализовать. –

ответ

2

Похоже, что у вас нет публичных полей/свойств в вашем классе Sprite. Решением для этого может быть добавление атрибута [JsonProperty] в частные поля, которые вы хотите сериализовать

0

На самом деле ваш код в порядке, он должен работать правильно. Дело в том, что, возможно, вы передаете эти экземпляры Sprite пустым в json-конвертер, назначаете ли вы эти значения, которые вы передаете конструктору в свойства класса, имя и вектор? Какими типами являются «голова», «ноги», «торс» и позиция, являются ли эти строки или объекты.

Смежные вопросы