【发布时间】:2014-03-23 10:12:28
【问题描述】:
假设我的 JSON 数据格式为:(树数据的种类:)
{
“节点数据”:
[
“节点对象”:
{
"nodeName": "节点 1",
"nodeChildren":
[
"nodeObject":
{
"nodeName": "Node 1-1"
},
"nodeObject":
{
"nodeName": "Node 1-2"
},
"nodeObject":
{
"nodeName": "Node 1-3",
"nodeChildren":
[
"nodeObject":
{
"nodeName": "Node 1-3-1"
}
]
},
"nodeObject":
{
"nodeName": "Node 1-4"
},
"nodeObject":
{
"nodeName": "Node 1-5",
}
]
},
"nodeObject":
{
"nodeName": "Node 2",
},
"nodeObject":
{
"nodeName": "Node 3",
}
] }
为了反序列化这些数据,在 SL 应用程序中,我定义了一个内部类来匹配 JSON 数据模型,例如:
[DataContract]
internal class nodeObject
{
[DataMember]
public string nodeName;
[DataMember]
public nodeObject nodeChildren;
}
然后使用 DataContractJsonSerializer 获取数据,但我得到了一种错误说:
在 JSON 中遇到意外字符。预期 ',',得到 ':'。 (37):
由于数据是一种树,List可能不适合这种数据?
如何解决这个问题?
谢谢,伙计们。如果 json 数据格式正确,那么我使用以下代码对上述数据的对象进行反序列化:
var jsonSerializer = new DataContractJsonSerializer(typeof(List<nodeObject>));
var nodes = jsonSerializer.ReadObject(e.Result) as List<nodeObject>;
this.listBox1.ItemsSource = nodes;
但我仍然得到节点的空值。
不确定如何使用这组树数据反序列化对象。
【问题讨论】:
标签: json rest silverlight-4.0