Tôi nhận JSON trở lại từ một API mà trông như thế này:Deserialize lồng nhau JSON vào C# đối tượng
{
"Items": {
"Item322A": [{
"prop1": "string",
"prop2": "string",
"prop3": 1,
"prop4": false
},{
"prop1": "string",
"prop2": "string",
"prop3": 0,
"prop4": false
}],
"Item2B": [{
"prop1": "string",
"prop2": "string",
"prop3": 14,
"prop4": true
}]
},
"Errors": ["String"]
}
Tôi đã thử một vài phương pháp để đại diện cho JSON này trong C# đối tượng (quá nhiều để liệt kê ở đây). Tôi đã thử với danh sách và từ điển, đây là một ví dụ gần đây như thế nào tôi đã cố gắng để thể hiện nó:
private class Response
{
public Item Items { get; set; }
public string[] Errors { get; set; }
}
private class Item
{
public List<SubItem> SubItems { get; set; }
}
private class SubItem
{
public List<Info> Infos { get; set; }
}
private class Info
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public int Prop3 { get; set; }
public bool Prop4 { get; set; }
}
Và đây là phương pháp tôi đang sử dụng để deserialize JSON:
using (var sr = new StringReader(responseJSON))
using (var jr = new JsonTextReader(sr))
{
var serial = new JsonSerializer();
serial.Formatting = Formatting.Indented;
var obj = serial.Deserialize<Response>(jr);
}
obj
chứa Items
và Errors
. Và Items
chứa SubItems
, nhưng SubItems
là null
. Vì vậy, không có gì ngoại trừ Errors
thực sự đang được deserialized.
Nó phải là đơn giản, nhưng đối với một số lý do tôi không thể tìm ra các đại diện đối tượng đúng
Thật tuyệt, tôi sẽ thử điều này. Tôi chỉ thử một cách tiếp cận tương tự, nhưng đã có từ điển được bọc trong một danh sách! – user3574076
Điều này đã hiệu quả. Hóa ra nỗ lực cuối cùng của tôi là * rất gần * – user3574076