【发布时间】:2017-02-22 14:16:29
【问题描述】:
如何在 C# 中使用 DataContractJsonSerializer 解析下面的 JSON 对象?
我需要定义一个类来保存以下 JSON 数据,其中包括混合类型(字符串和整数)的基元数组的数组:
Body:
{
"status": "failure",
"staticdata": [
[
"2013-06-01",
123
],
[
"2013-06-02",
234
],
[
"2013-06-03",
345
],
...
]
}
我尝试了以下答案并尝试通读DataContractJsonSerializer,
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(RootObject));
object objResponse = jsonSerializer.ReadObject(response);
RootObject jsonResponse = objResponse as RootOject;
foreach (object[] sd in jsonResponse.staticdata)
{
foreach (object o in sd)
{
//Value val = v as Value;
Value val = (Value)Convert.ChangeType(o, typeof(Value));
log.Info("date: " + val.date);
log.Info("crashCount: " + val.longValue);
}
}
但是在从对象到值的转换类型中崩溃了,我在这里遗漏了什么吗?
值低于类:
[DataContract]
public class Value
{
[DataMember(Name = "date")]
public string date { get; set; }
[DataMember(Name = "longValue")]
public long longValue{ get; set; }
}
修改后的代码读取Values(IgnoreDataMember Values),然后可以读取如下:这是正确的方法吗?
object objResponse = jsonSerializer.ReadObject(response);
RootObject jsonResponse = objResponse as RootOject;
foreach (Value in jsonResponse.Values)
{
log.Info("date: " + val.date);
log.Info("longValue: " + val.longValue);
}
【问题讨论】:
-
你为什么不用Json.Net?这更容易
-
好的,但是这里 [ "2013-06-01", 123 ],没有任何名称..
标签: c# arrays json datacontractjsonserializer