【问题标题】:How can I get asp.net mvc to recognize decimals in json?如何让 asp.net mvc 识别 json 中的小数?
【发布时间】:2017-10-17 08:53:51
【问题描述】:

在我的 .net 应用程序中,我使用的是 System.Web.Mvc 5.2.3.0。我的客户发布 json 内容类型为:'application/json'

{From: "EUR", To: "USD", Rate: 0.00001}

当我的控制器收到这个时

[HttpPut(), Route("/ExchangeRate/{exchkey}")]
public HttpResponseMessage PutCurrencyExchange(string exchkey, [FromBody()] JObject jsonData)
 {...

JObject 的 Rate 是一个字符串“1E-05”。

我已阅读有关自定义转换器的信息 https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Converters.htm 和合同解析器 https://www.newtonsoft.com/json/help/html/CustomContractResolver.htm

我发现了一些非常古老的反序列化强类型对象的示例。但是,我希望我只是错过了一个简单的配置更改,它将允许我的控制器的 JObject 正确地将小数表示为小数。注意:我认识到如果客户端将值字符串化,它将正确解析它。但是,我无法规定我的端点的消费者首先对值进行字符串化。

【问题讨论】:

  • 我的错误...... Rate 是以 Double 的形式出现的,而不是字符串。监视窗口只是将其表示为 1E-05。在下游,它被转换为字符串,我试图转换为小数,但失败了。我的错。

标签: c# asp.net-mvc json.net


【解决方案1】:

如果您能够更改它,我会更幸运地使用包含单个参数而不是来自主体的控制器操作

【讨论】:

  • 没错,因为与[FromBody()] JObject jsonData相比,将(string From, string To, double Rate)定义为参数更简洁且更易于维护。
  • 感谢您的贡献。但是,对于许多需要在正文中发布数据的端点,这可能是我的应用程序中的一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
相关资源
最近更新 更多