Saya memiliki JSON ini:
[
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 1",
"Values": [
"Acc 1"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "1",
"Values": [
"1"
]
}
}
],
"Name": "account",
"Id": "1"
},
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 2",
"Values": [
"Acc 2"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "2",
"Values": [
"2"
]
}
}
],
"Name": "account",
"Id": "2"
},
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 3",
"Values": [
"Acc 3"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "3",
"Values": [
"3"
]
}
}
],
"Name": "account",
"Id": "2"
}
]
Dan saya memiliki kelas-kelas ini:
public class RetrieveMultipleResponse
{
public List<Attribute> Attributes { get; set; }
public string Name { get; set; }
public string Id { get; set; }
}
public class Value
{
[JsonProperty("Value")]
public string value { get; set; }
public List<string> Values { get; set; }
}
public class Attribute
{
public string Key { get; set; }
public Value Value { get; set; }
}
Saya mencoba deserialize JSON di atas menggunakan kode di bawah ini:
var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);
tapi saya mendapatkan kesalahan ini:
Tidak dapat menghapus derialisasi array JSON saat ini (misalnya [1,2,3]) ke dalam tipe 'test.Model.RetrieveMultipleResponse' karena jenis tersebut memerlukan objek JSON (misalnya {"name": "value"}) untuk melakukan deserialisasi dengan benar. Untuk memperbaiki kesalahan ini, ubah JSON menjadi objek JSON (mis. {"Name": "value"}) atau ubah tipe deserialisasi menjadi larik atau tipe yang mengimplementasikan antarmuka koleksi (mis. ICollection, IList) seperti List yang dapat di-deserialized dari array JSON. JsonArrayAttribute juga dapat ditambahkan ke jenis untuk memaksanya melakukan deserialisasi dari array JSON. Path '', baris 1, posisi 1.
Jika seseorang ingin mendukung Generik (dalam metode ekstensi) ini adalah polanya ...
Ini digunakan seperti ini:
MyClassType terlihat seperti ini (harus cocok dengan pasangan nilai nama dari array JSON)
Gunakan NUGET untuk mendownload Newtonsoft.Json menambahkan referensi jika diperlukan ...
sumber
Tidak dapat menambahkan komentar ke solusi tetapi itu tidak berhasil untuk saya. Solusi yang berhasil bagi saya adalah menggunakan:
Deserialisasi array JSON menjadi objek .NET yang diketik dengan kuat
sumber
bekerja!
sumber
Gunakan ini,
FrontData
adalah string JSON:dan ekstrak daftar:
sumber