Json.NET serializer'ı IDictionary<,>
örneğini anahtar/değer özelliklerine sahip nesneler dizisine serileştirmek için nasıl yapabilirim? Varsayılan olarak, anahtarın değerini JSON nesnesinin özellik adına serileştirir.Serialize Dictionary <,> Json.NET'te dizi olarak
[{"key":"some key","value":1},{"key":"another key","value":5}]
yerine:
Temelde böyle bir şey ihtiyaç
{{"some key":1},{"another key":5}}
Ben serileştirici ayarlarına KeyValuePairConverter
eklemek çalıştı ama hiçbir etkisi yoktur. (Bu dönüştürücü IDictionary<>
türü için yok sayılır ancak diğer kütüphanelerden alınır alınmaz kolayca benim nesnelerin türünü değiştiremezsiniz, bu nedenle IDictionary<>
den ICollection<KeyValuePair<>>
değişen benim için seçenek değil buldum.)
yerine olmayan jenerik 'System.Collections.IDictionary' kontrol etmek daha kolay (ve daha tam) olacaktır. Genel arayüzler genellikle jenerik olmayan arayüzleri genişletir. Ayrıca, 'TypeImplementsGenericInterface()' yönteminiz 'Where() yerine' Any() 'kullanarak basitleştirilebilir. FirstOrDefault()! = Null'. –
Güzel olsa da, "IDictionary" aslında jenerik olmayan 'IDictionary' arabirimini genişletmiyor. [Belgeler] 'e bakın (http://msdn.microsoft.com/en-us/library/s4ys34ea.aspx). Ancak, tamlık adına, 'IDictionary' için destek eklemek için cevabımı düzenledim ve 'TypeImplementsGenericInterface()' yöntemini basitleştirme ile ilgili diğer önerinizi ekledim. Teşekkürler! –
Ah, bunu unuttum. Düzeltme, _immutable_ genel arayüzler genellikle ilgili _immutable_ non-generic arayüzü genişletir, maalesef burada geçerli değildir. Bunu yararlı bulabilen herkes için –