将复杂对象列表序列化为JSON

时间:2014-01-25 20:42:00

标签: c# json file-io json.net

我无法弄清楚如何让Newtonsoft.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 );
}

创建了文件,但结果始终是一个空对象数组:

[{},{},{}]

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您的Sprite类似乎没有任何公共字段/属性。对此的解决方案是将[JsonProperty]属性添加到要序列化的私有字段

答案 1 :(得分:0)

事实上你的代码很好,它应该正常工作。 问题是,您可能将这些Sprite实例传递给json转换器,您是否将这些传递给构造函数的值分配给类属性,名称和Vector? 什么类型的值是“头”,“腿”,“躯干”和位置,是这些字符串或对象。