【发布时间】:2012-04-12 06:16:11
【问题描述】:
为了反序列化一个 json 对象,我必须为子类定义一个包含一个对象或对象数组的父类。如果检索到对象,则必须是对象;如果从 json 中检索到数组,则必须是对象数组。
JSON 数组对象
{"y":{"x":[{"data":28}, {"data":56}, {"data":89}]}}
JSON 对象
{"y":{"x":{"data":28}}}
y 一次接收 x,另一次接收 x[]。没有这样的条件来确定 y 是否会收到一个数组或一个对象。
因此,为了确定我是否收到了一个数组,我正在检查 IsArray() 条件。
我试过了
class Y
{
public X x { get { return System.IsArray() ? new X() : new x[] }; set; }
}
class X
{
public int data { get; set; }
}
- 它不起作用。
- System.IsArray() 未被识别??
【问题讨论】:
-
您是否可以控制生成 JSON 的逻辑?如果是这样,您应该考虑重新设计数据对象以遵循标准合同。从长远来看,拥有一个有时是单个对象、有时是数组的属性是一个糟糕的设计和问题。如果你有能力,你应该考虑把它变成一个数组并构建你的对象模型来解决这个问题。
-
IsArray 检查
Type。你应该在你有兴趣检查的对象上检查它,而不是在System。
标签: c# json windows-phone-7 c#-4.0