5
有沒有辦法在處理基元類型時覆蓋Json.net的默認反序列化行爲?例如,當將json數組[3.14,10,"test"]
解串爲object[]
類型時3.14將是double
和將是long
類型。無論如何,我可以攔截或覆蓋這種類型的決定,所以我可以反序列化的值分別爲decimal
和int
?覆蓋Json.Net中的默認基元類型處理
我基本上總是希望json整數始終返回爲int
並漂浮返回爲decimal
。這將節省我一些不得不在我的代碼中注入double
到decimal
轉換。
我已經研究了擴展Newtonsoft.Json.Serialization.DefaultContractResolver
並實現我自己的Newtonsoft.Json.JsonConverter
,但我還沒有發現任何方法來實現這個所需的覆蓋。
示例代碼重現
object[] 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}
JsonTextReader.SetToken是不是在我json.net 4.5.1的發佈,標誌着虛擬的,所以覆蓋拋出'沒有合適的方法來替代'。我錯過了什麼嗎? – 2012-03-28 22:11:33
@MatthewRuston我目前的Json.Net版本是'4.0.5'。 – 2012-03-28 22:13:54
看起來像他們刪除了最近版本中的虛擬屬性。奇怪。 – 2012-03-28 22:15:03