Newtonsoft.Jsonのバージョンを「8.0.3」から「9.0.1」に更新しました。 変更後、私はダブルスと文字列。 Newtonsoft.JsonバージョンでNewtonsoft.Json.netのdoubleとstringの間の変換に関する問題
public class KeyValue
{
public string Key { get; set; }
public string Value { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
var json = "{\"Key\": 'test', \"Value\": 210001.0}";
var kv = JsonConvert.DeserializeObject<KeyValue>(json);
}
"8.0.3" - クラスの出力は次のようになります:
はここにいくつかのコードだ キー - "テスト" 値 - "210001" //ません。 Newtonsoft.Jsonバージョン「9.0.1」では0
クラスの出力は キーだろう - 「テスト」 値 - 値が210001.0である場合にのみ、「210001.0」
これが起こる - 210001.1それのためにwオウルは起こらない。 新しいバージョンでこの問題が改善されていることが分かりましたが、旧バージョンのソリューションに依存する外部コードがたくさんあります。 旧バージョンのソリューションはどのように実現できますか?
私はこれをコンバーター経由で実装したくなかったが、今まで提案された最高のソリューションだと思う。どうもありがとうございました!!! –
@olegchernyakov、予防策として、コンバータの実装を少し変更し、 'CanConvert'の本体を' throw new NotSupportedException(); 'に置き換えることを提案します。 'CanConvert'はプロパティが属性でマークされているときに呼び出されないので、コンバーターが' JsonSerializerSettings.Converters'コレクションに追加されたときにのみ、 'CanConvert'がプロパティの型を受け取るので、いくつかの問題が発生する可能性があります。数値型ではなく「文字列」になります。ボディを削除すると、このコンバータは 'JsonConverterAttribute'でのみ使用されます。 – kiziu