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);
我有一个 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);