【问题标题】:JsonConvert localized number with decimals in json.netJsonConvert json.net 中带小数的本地化数字
【发布时间】:2011-05-27 15:51:00
【问题描述】:

我正在使用json.net 来序列化和反序列化一个对象。唯一的问题是,当我尝试反序列化对象时,它无法解析它刚刚创建的 double 值。序列化时,它生成十进制字符.,但是当它尝试反序列化时,它期望,

这里的问题可能是我在设备上的应用程序中运行反序列化。并且设备可能设置为与创建 JSON 的服务器不同的本地化。

那么无论本地化格式是什么,是否可以强制json.netdouble 反序列化为十进制字符.

edit 在 json.net codeplex 中有一个错误,但情况正好相反。我尝试将我的类型从double 切换到decimal,现在它可以完美运行...

edit2:

class Spot
{
    int Id;
    string Name;
    double Distance;
    double Rating;
}

我猜默认文化是系统文化,对吧?哪个是挪威语(nb-NO)

Here's the output. 如您所见,我正在发送带有 , 的 inn doubles 用于 latlong 值,这些值在服务中被解析为 double

【问题讨论】:

  • 你能发布课程吗,你是如何反序列化/序列化的,你的应用程序在什么文化下运行?这听起来像是一个需要修复的错误。
  • @James Newton-King:我用一些代码示例更新了我的问题。

标签: c# formatting json.net


【解决方案1】:

听起来这可能是 Json.NET 中的一个错误。

根据JSON spec,小数分隔符应始终为.(参见第2.4 节)。

话虽如此,但有可能——我不知道——Json.NET 可能允许您覆盖尝试反序列化时使用的文化。

【讨论】:

  • 有点不回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
相关资源
最近更新 更多