İlkel türleri ele alırken Json.net'in varsayılan serileştirme davranışını geçersiz kılmanın bir yolu var mı? Örneğin object[]
3.14 bir tür json dizi [3.14,10,"test"]
deserializing zaman tip double
arasında olacak ve tip long
olacaktır. Yine de, bu tür kararları kestirebilir veya geçersiz kılabilirim, böylece değerleri sırasıyla decimal
ve int
olarak kaldırabilir miyim?Json.Net'te Varsayılan İlkel Tür İşlemini Geçersiz Kılma
Temel olarak her zaman json tam sayılarının her zaman int
olarak dönmesini ve decimal
olarak dönmek için yüzmesini istiyorum. Bu, kodumdaki bazılarının double
decimal
dönüşümüne enjekte etmesi için beni kurtaracak.
Newtonsoft.Json.Serialization.DefaultContractResolver
uzantısını genişletmeye ve kendi Newtonsoft.Json.JsonConverter
numaralı uygulamamı inceledim ancak istenen bu geçersiz kılma işlemini gerçekleştirmenin herhangi bir yolunu bulamadım.
Örnek kod
benceobject[] variousTypes = new object[] {3.14m, 10, "test"};
string jsonString = JsonConvert.SerializeObject(variousTypes);
object[] asObjectArray = JsonConvert.DeserializeObject<object[]>(jsonString); // Contains object {double}, object {long}, object {string}
, böylece geçersiz kılma 'geçersiz kılma için uygun bir yöntem' atıyor. Bir şey mi eksik? –
@MatthewRuston Şu anki Json.Net sürümüm 4.0.5'tür. –
, sanal özelliği son bir sürümde kaldırmış gibi görünüyor. Garip. –