(Ben bu örnek için gerekli olmayan bazı alanları kaldırıldı) şöyle bir yayını, vardır:Koleksiyona farklı türler nasıl seri hale getirilir?
{
"total_count": 2,
"num_pages": 1,
"current_page": 1,
"balance": {
"amount": "0.00001199",
"currency": "BTC"
},
"transactions": [
{
"transaction": {
"id": "5018f833f8182b129c00002f",
"created_at": "2012-08-01T02:34:43-07:00",
"sender": {
"id": "5011f33df8182b142400000e",
"name": "User Two",
"email": "[email protected]"
},
"recipient": {
"id": "5011f33df8182b142400000a",
"name": "User One",
"email": "[email protected]"
}
}
},
{
"transaction": {
"id": "5018f833f8182b129c00002e",
"created_at": "2012-08-01T02:36:43-07:00",
"hsh": "9d6a7d1112c3db9de5315b421a5153d71413f5f752aff75bf504b77df4e646a3",
"sender": {
"id": "5011f33df8182b142400000e",
"name": "User Two",
"email": "[email protected]"
},
"recipient_address": "37muSN5ZrukVTvyVh3mT5Zc5ew9L9CBare"
}
}
]
}
işlemler iki tür Bu feed'de vardır: recipient
sahip dahili işlemleri, ve hsh
ve recipient_address
olan harici işlemler.
TransactionPagedResult
) ile tüm disk belleği sonuçları (
PagedResult
) için bir temel sınıf vardır:
bu yapıyı karşılamak için aşağıdaki sınıflar yarattı. Bu sonuç 0 .. * işlemlerini içeren bir koleksiyona sahiptir (soyut sınıf
Transaction
). Bunlar,
Transaction
türünde değil, veya
ExternalTransaction
türlerinde değil,
Transaction
numaralı uygulamalardır.
Sorum, JSON.NET'in buna nasıl izin verebildiğim sorusudur. JSON.NET'in ayrıştırmakta olan geçerli işlemin InternalTransaction
veya ExternalTransaction
olup olmadığını görmek ve TransactionPagedResult
içinde IEnumerable<Transaction>
koleksiyonuna ilgili türü ekleyin.
[JsonConverter(typeof(TransactionCreationConverter))]
özniteliği ile
IEnumerable<Transaction>
bir özellik olarak eklendi benim kendi JsonConverter oluşturuldu, ancak bu aşağıdaki hatayı alıyorum, işe yaramadı:
Additional information: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path 'transactions', line 1, position 218.
bu JSON çünkü anlıyoruz. NET, tüm koleksiyonu seri hale getirmeye çalışır, ancak koleksiyondaki her bir nesneyi birer birer tekrar serilemek istiyorum.
Herkes?
iyi bir gönderi, ama tam olarak ne demek istediğimin bilgisini ekleyebilir misiniz ..."Ama bu işe yaramadı" mesajın en sonunda? –
Evet, bunu eklemedim çünkü yazının çok uzun olmasını istemedim. JsonReader öğesinin bir nesne değil, bir dizi (yani, IEnumerable koleksiyonuna özniteliği yerleştirdiğim için doğru olan) bir hata olduğunu anladım. JsonConverter'ın IEnumerable'daki her bir öğeye bakmasını istiyorum. –
@Jack Yanlış iş parçacığına bağlı olduğunu mu düşünüyorsun? –