【发布时间】:2015-11-08 15:16:06
【问题描述】:
这是一个延伸,但它是一个真实世界的例子,但还很模糊。我们有一个 Data 节点,列表中有多个 Fluff 对象。它们根据它们在列表中的索引来命名,例如:{ Fluff_0, Fluff_1, ..., Fluff_n }
当我反序列化这个对象时,我希望它被反序列化为 List<Fluff>。
有没有办法用 JsonPropertyAttributes 来装饰它,这样我就可以在 Data 对象中获得 Fluff 对象的有序通用列表(或其他集合)?
[TestFixture]
public class FluffDeserializationTests
{
[Test]
public void FluffDeserialization()
{
var json = "{\"Data\": { \"Fluff_0\": {\"ID\": \"abc\"}, \"Fluff_1\": { \"ID\": \"abd\" } } }";
var result = JsonConvert.DeserializeObject<Fluff>(json);
Assert.That(result.Data.Things != null);
Assert.That(result.Data.Things.Count, Is.EqualTo(2));
Assert.That(result.Data.Things[0].ID, Is.EqualTo("abc"));
Assert.That(result.Data.Things[1].ID, Is.EqualTo("abd"));
}
public class Fluff
{
public Data Data { get; set; }
}
public class Data
{
public List<Thing> Things { get; set; }
}
public class Thing
{
public string ID { get; set; }
}
}
【问题讨论】:
-
您的
"Data"容器是一个JSON 对象,标准定义为an unordered set of name/value pairs。那么,您希望列表在反序列化后的顺序是什么? -
按照它们在 json 字符串 @dbc 中出现的顺序。
标签: c# json json.net json-deserialization