プリミティブ型の処理時にJson.netのデフォルトの逆シリアル化動作をオーバーライドする方法はありますか?例えば、json配列[3.14,10,"test"]
を逆シリアル化するときにobject[]
3.14のタイプはdouble
であり、のタイプはlong
です。とにかく私はこの型の決定を傍受またはオーバーライドできるので、値をdecimal
とint
にそれぞれ逆シリアル化できますか?Json.Netでのデフォルトのプリミティブ型の処理のオーバーライド
私は基本的にいつも常にjson整数がint
として返され、floatが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}
を動作するはずです'オーバーライドに適していない方法'を投げています。何か不足していますか? –
@MatthewRuston私の現在のJson.Netバージョンは '4.0.5'です。 –
は最近のリリースで仮想プロパティを削除したようです。奇妙な。 –