JSON反序列化将负值转换为绝对值

本文关键字:转换 绝对值 反序列化 JSON | 更新日期: 2023-09-27 18:21:22

我正在使用JsonConvert.DeserializeObject<MyJson>(input)来解析传入的字符串。

MyJson类声明为以下

public class MyJson
{
    public ClassA ClassA { get; set; }
    // some other classes
} 
public class ClassA
{ 
    public decimal? ValueA { get; set; }
    // some other values
}

而传入字符串input的内容为

{"ClassA":{"ValueA":"-100.11"}}

解析没有抛出任何错误,所有值都解析成功,除了负值-100.11已转换为100.11。

你知道这是怎么发生的吗?

JSON反序列化将负值转换为绝对值

您可以尝试为反序列化指定CultureInfo

var json = "{ '"ClassA'":{ '"ValueA'":'"-100.11'"} }";
var settings = new JsonSerializerSettings
{
    Culture = new CultureInfo("en")
};
var result = JsonConvert.DeserializeObject<MyJson>(json, settings);