JSON .Net Core 的序列化程序问题

JSON serializer issue with .Net Core

我有一个 restful api (.Net Core web api),它调用另一个 api(第 3 方)并接收 [=28= 中的数据] 格式。然后使用反序列化将此 json 数据转换为 class 个对象。

问题:JSON 从其他 api 返回的数据包含一些小数值,例如 325.34723897,但是当它在 restful api 中接收时,它只是 325 并且所有十进制值都被修剪。正在使用如下代码调用第 3 方 api(responseStream 本身具有修剪值):

 HttpWebRequest webRequest = GetWebRequest();
        webRequest.Method = "POST";

        UTF8Encoding encoding = new UTF8Encoding();
        Byte[] byteArray = encoding.GetBytes(Request);

        webRequest.ContentLength = byteArray.Length;
        webRequest.Timeout = 60;            

        try
        {
            using (Stream dataStream = webRequest.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
            }

            WebResponse webResponse = await webRequest.GetResponseAsync();

            using (Stream responseStream = webResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                ResponseString = reader.ReadToEnd();
                response = _serializer.DeserializeObject<TResponse>(ResponseString);
            }
        }
        catch (Exception ex)
        {}

如何在 DotNet Core 中修复它。

我发现一些论坛在解决方案中给出了 Dot Net Framework 而不是 Core(因为 GlobalConfiguration 在 Core 中不存在)。

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Culture = new CultureInfo(string.Empty) {
NumberFormat = new NumberFormatInfo {
    CurrencyDecimalDigits = 5
}};

我刚刚尝试 Newtonsoft.Json 反序列化值为 325.34723897 的 double 属性 并且一切正常。您可以使用 Nuget 安装它。试试这个代码

 ResponseString = reader.ReadToEnd();
 response = JsonConvert.DeserializeObject<...your class>(ResponseString);