gpt4 book ai didi

c# - 如何精确反序列化十进制属性

转载 作者:行者123 更新时间:2023-12-05 06:53:41 24 4
gpt4 key购买 nike

在我的 WEb Api 中,我返回的 json 是这样的:

  class Test
{
public decimal Dec { get; set; }
}

Test test = new Test() { Dec = 1.00m };
var json = JsonConvert.SerializeObject(test, Formatting.Indented);
return json;

目前json是

{
"Dec": 1.00
}

我正在尝试这样测试它:

var dictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
var decimalValue = dictionary["Dec"]; // I am expecting 1.00 but it is 1

它得到 1 而不是 1.00。但是当我这样做时:

        var myTest = JsonConvert.DeserializeObject<Test>(json);
var decimalValue = myTest.Dec; // It is 1.00

它正在变得 1.00。但问题是我不能在我的测试中使用测试类。问题是为什么将它反序列化为字典后它是 1?我应该创建一个像“测试”这样的新类,还是有什么办法可以解决这个问题?

最佳答案

因此,在 JsonSerializerSettings 中将 FloatParseHandling 设置为 Decimal 解决了我的问题:

    var dictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(json, new JsonSerializerSettings() { FloatParseHandling = FloatParseHandling.Decimal });
var decimalValue = dictionary["Dec"];

关于c# - 如何精确反序列化十进制属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65718653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com