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

Vit*_*uel 0 locale decimalformat gson

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

Bri*_*ach 5

简短的回答:你不知道。

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

虽然 JSON 是一种基于文本的数据交换格式,但 JSON 中的数字(相对于字符串)是数值,不受区域设置的影响。JSON规范的2.4节提供了具体的定义(重点是我的):

2.4. 数字

数字的表示与大多数编程语言中使用的类似
。数字包含整数部分,该
整数部分可以带有可选的减号作为前缀,其后可以是分数部分和/或指数部分。

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

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

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


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

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

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