【发布时间】:2015-05-14 15:28:18
【问题描述】:
想象一下我有这样一门课:
public class Foo
{
[JSonProperty("a")]
public int a;
[JSonProperty("b")]
public int b;
public List<Foo> foos;
}
想象一下我有一个像这样的 Json:
{
"a": "0",
"b": "1",
"moreFoos": {
"total" : "2",
"foos" : [
{
"a" : "2",
"b" : "3"
},
{
"a" : "4",
"b" : "5"
}
]
}
}
所以,我想做的是用 JsonConvert.DeserializeObject(Foo) 反序列化所有属性,但现在只有“a”和“b”被反序列化。我试图把这样的东西放在 foos 属性上:
[JsonProperty("moreFoos.foos")]
public List<Foo> foos;
但它不起作用,foos 为空。你知道是否有办法以这种方式动态映射属性?当然,我想避免创建一个新类,它的 int 属性名为“total”,另一个名为 foos 作为 Foo 对象列表。
问候, 罗曼。
【问题讨论】:
-
我只能想到在这里使用动态:JsonConvert.DeserializeObject
(Foo) 然后使用一种方法将动态转换为您的对象。否则你可以使用custom deserializer -
IMO,您应该创建一个直接映射到 json 数据形状的类型。如果您随后更喜欢不同的形状,请为此创建一个新类型并相应地映射。