我已将我的Newtonsoft.Json版本从“8.0.3”更新为“9.0.1”, 更改后,我开始面对双打之间的一些转换问题和字符串。在Newtonsoft.Json.net中转换双打和字符串之间的问题
下面是一些代码:
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);
}
在Newtonsoft.Json版 “8.0.3” - 之类的产出将是: 关键 - “测试” 价值 - “210001” //没有。 0
在Newtonsoft.Json版“9.0.1”之类的产出将是 关键 - “测试” 价值 - “210001.0”
这种情况仅在值为210001.0 - 为210001.1它w ^不会发生。 现在我明白新版本更好地解决了这个问题,但是我有很多依赖于旧版本解决方案的外部代码。 如何实现旧版本解决方案?
我不想通过转换器实现这一点,但我想这是迄今为止提出的最佳解决方案。非常感谢你!!! –
@olegchernyakov,作为一种预防措施,我建议稍微改变转换器的实现,并用'throw new NotSupportedException();'替换'CanConvert'的主体。由于'CanConvert'在属性被标记为属性时没有被调用,只有当转换器被添加到集合'JsonSerializerSettings.Converters'时,它可能会产生一些问题,因为'CanConvert'会收到一种属性,在你的情况下是'串'而不是数字类型。移除主体将确保此转换器仅与'JsonConverterAttribute'一起使用。 – kiziu