如何在GSON上设置Locale(用于十进制数字分隔符)

时间:2013-10-18 14:04:38

标签: locale gson decimalformat

我知道您可以设置日期格式,但是如何设置其他特定于区域设置的内容,如十进制数字格式? (我的意思是逗号与点)

1 个答案:

答案 0 :(得分:3)

简短的回答:你没有。

您似乎有点混淆数字的文本表示和实际数值。

虽然JSON是基于文本的数据交换格式,但JSON中的数字(与字符串相对)是一个数值,不受语言环境的影响。 Section 2.4 of the JSON specification提供了具体的定义(强调我的):

  

2.4。编号

     

数字表示与大多数数字相似   编程语言。数字包含一个整数分量   可以使用可选的减号作为前缀,后面可以是   分数部分和/或指数部分。

     

不允许使用八进制和十六进制形式。前导零不是   允许的。

     

小数部分是小数点后跟一个或多个数字。

     

指数部分以大写或小写字母E开头,
  可能后面跟一个加号或减号。 E和可选的
  符号后跟一个或多个数字。

     

无法表示为数字序列的数字值
  (例如Infinity和NaN)是不允许的。

鉴于上述情况,诸如{"my_double":3,2}之类的东西不是有效的JSON。 {"my_double":3.2}是。

解析JSON时,解析器会将数字存储到基本数据类型(intdouble)。然后,您的语言环境将使用常规方法将它们正确显示,以将它们转换为字符串; Integer.toString(myInt)String.valueOf(myDouble)