【问题标题】:JsonConvert throws a 'not a valid integer' exception when deserializing double type variable反序列化双精度类型变量时,JsonConvert 抛出“不是有效整数”异常
【发布时间】:2018-01-10 21:58:08
【问题描述】:

当我尝试从 JSON 字符串反序列化为对象时遇到异常。

Newtonsoft.Json.JsonReaderException
Input string '106.890907 is not a valid integer. Path 'data[0].loc.coordinates[0]', line 1, position 9413.

这就是我反序列化对象的方式:

var propertiesObj =
          JsonConvert.DeserializeObject<Location>(
              jsonObject);

而且,这就是我的 json 的样子

{
    "coordinates":
    [
        106.890907,
        -6.149393
    ],
    "type": "Point"
}

最后,这是我声明模型类的方式:

Location.cs

public class Location
{
    public List<double> coordinates { get; set; }
    public string type { get; set; }
}

我在 StackOverFlow 上参考过这个问题,但它并没有解决我的问题,link

请帮忙。我一直无法找到任何解决方案。谢谢。

【问题讨论】:

  • 是整个json吗?因为这个 json 无效
  • 不,不是。由于机密信息问题,我只展示了其中的一部分。现在我已将其更改为正确的 json。感谢您指出。对不起我的错误。
  • 以下答案对您有用吗?

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


【解决方案1】:

试试这个,更新 JSON:

来自

"loc": {
"coordinates": [
  106.890907,
  -6.149393
],
"type": "Point"
}

收件人

{
"coordinates": [
  106.890907,
  -6.149393
],
"type": "Point"
}

即从 Json 中删除“loc”

【讨论】:

  • 嗨,@Vivek。我显示了有问题的错误 json。我现在已将其更改为正确的。对不起我的错误。
【解决方案2】:

在我重新安装 Windows 10 后,这个错误就莫名其妙地消失了。

【讨论】:

    【解决方案3】:

    这是本地化问题。您可以为 JsonConvert 设置 CultureInfo。 我认为您的系统接受带有逗号(,)而不是点(.)的双精度

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-31
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      • 2013-10-27
      相关资源
      最近更新 更多