如何在没有符号的情况下将双精度序列化为JSON Newtonsoft JSON.NET?

问题描述 投票:0回答:1

ASP.NET Core 应用程序使用 Newtonsoft JSON.NET 进行序列化:

builder.Services.AddControllers().AddNewtonsoftJson();

有一些模型具有 double 类型的属性:

public class SomeModel
{
    public double Number { get; set; } = 0.0000000100000000000000001234567;
}

还有这个控制器:

[ApiController]
public class HomeController : ControllerBase
{
    [HttpGet]
    [Route("/")]
    public SomeModel Index()
    {
        return new SomeModel();
    }
}

结果是json

{"number":1E-08}

预期结果是

{"number": 0.0000000100000000000000001234567}
。如何才能实现这一目标?

我已经尝试使用

FloatParseHandling = FloatParseHandling.Decimal
创建新转换器,但科学记数法仍然存在。

asp.net-core serialization json.net scientific-notation
1个回答
0
投票

您必须从一开始就指定格式 这个例子应该可以帮助您理解以及如何转换:

void Main()
{
    var x = new SomeModel().Number;
    Console.WriteLine(x);
    Console.WriteLine(decimal.Parse(x.ToString(), NumberStyles.Float));

    var x2 = new SomeModel().Number2;
    Console.WriteLine(x2);
    Console.WriteLine(decimal.Parse(x2.ToString(), NumberStyles.Float));
}

public class SomeModel
{
    public double Number { get; set; } = 0.0000000100000000000000001234567;
    public double Number2 { get; set; } = 0.0000000100000000000000001234567F;
}

结果将是

1E-08
0.00000001
9.99999993922529E-09
0.00000000999999993922529
© www.soinside.com 2019 - 2024. All rights reserved.