【发布时间】:2022-01-20 18:56:14
【问题描述】:
我有一个restful api(.Net Core web api),它调用另一个api(第3方)并以json格式接收数据。然后使用反序列化将这个 json 数据转换为类对象。
问题:从其他api返回的JSON数据包含一些十进制值,例如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
}};
【问题讨论】:
-
您必须将您的响应字符串发布到 other 中才能对其进行测试。并且设置取决于序列化器类型,而不是全局变量。您正在使用什么序列化,例如可以使用 Newtonsoft.Json 吗?
标签: json asp.net-core-webapi json-deserialization