目前,我有一些JSON数据,我试图使用DataContractJsonSerializer
类反序列化。但是,数据中的一个数组包含多种类型的对象。有没有办法正确反序列化这些数据?我知道a very similar question exists,但我不想使用Json.NET或任何其他第三方库。
编辑:一个小例子:
在这种情况下,我们假设JSON的格式为[{"foo":string},{"bar":string},{"foo":string},{"foo":string},...]
,其中每个元素都是{"foo":string}
或{"bar":string}
形式。然后,合同可以这样设置:
[DataContract]
class Foo { [DataMember] public string foo; }
[DataContract]
class Bar { [DataMember] public string bar; }
在这种情况下,我的问题是,如何反序列化此Foo
和Bar
s数组?
答案 0 :(得分:0)
这听起来不对。单个阵列中不应该有两种完全不同的类型。鉴于JSON提供,我会尝试这样的事情......
[DataContract]
class SomeClass
{
[DataMember]
public string foo { get; set;}
[DataMember]
public string bar { get; set;}
}
然后检查每个属性的IsNullOrWhiteSpace()
。
更新了更多代码......
static void Main(string[] args)
{
SomeClass[] output;
var json = "[{\"foo\":\"value\"},{\"bar\":\"value\"},{\"foo\":\"value1\"},{\"foo\":\"value1\"}]";
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var deserializer = new DataContractJsonSerializer(typeof(SomeClass[]));
output = (SomeClass[])deserializer.ReadObject(ms);
}
// do something with output
Console.WriteLine(output.Length);
}