Предположим, у меня есть данные JSON, отформатированные как: (вид данных дерева:)
{
"NodeData":
[
"NodeObject":
{
"nodeName": "Node 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):
поскольку данные - это своего рода дерево, список может не подходить для таких данных?
Как решить эту проблему?
Спасибо, ребята. Если данные json хорошо отформатированы, я использую следующий вид кода для десериализации объекта для вышеуказанных данных:
var jsonSerializer = new DataContractJsonSerializer(typeof(List<nodeObject>));
var nodes = jsonSerializer.ReadObject(e.Result) as List<nodeObject>;
this.listBox1.ItemsSource = nodes;
Но я все равно получаю ноль для узлов.
Не уверен, как десериализовать объект с помощью этого кнода данных дерева.