【发布时间】:2015-07-02 14:01:50
【问题描述】:
我正在尝试反序列化我的 json 数据,但是我的类设置不正确我无权更改 json 响应,因此我需要编写一个函数来正确处理 json。
这是数据
{
"blabla": {
"-Score": "1",
"-Ref": "50",
"foo": {
"-colour": "Yellow",
"-ref": "y50"
}
}
}
但有时数据会是
{
"blabla": {
"-Score": "1",
"-Ref": "50",
"foo": [
{
"-colour": "Yellow",
"-ref": "y50"
},
{
"-colour": "Green",
"-ref": "g50"
},
{
"-colour": "Red",
"-ref": "r50"
}
]
}
}
此类适用于第一个数据
public class blabla
{
public Foo Foo {get; set;}
}
这个类适用于第二个数据
public class blabla
{
public Foo[] Foo {get; set;}
}
但是我怎样才能让课程同时适用于两者?
【问题讨论】:
-
“为了便于阅读”,如果您显示实际的 JSON,会远更好。你问我们如何反序列化我们想象这两个示例的 JSON 表示可能是什么。
-
您对 JSON 格式有任何控制权吗? “有时它是一个数组,有时它不是”不是有史以来最合理的表示。 “始终是一个数组,即使只有一个”将使序列化和反序列化方面的工作更轻松。
-
不幸的是,我完全无法控制它
-
不确定这是否有用,但它似乎是一个类似的问题 - michaelcummings.net/mathoms/…
-
如果可以使用 JSON.net,那么编写自定义转换器很容易。您的
blabla类将具有Foo[]属性,您将使用自定义转换器检查foo属性并填充数组。