我正在尝试使用 Gson 从 JSON 字符串中检索元素。我想获取正确类型的数字,但 Gson 给出的整数为 double 值。
这是我的代码:
String jsonString = "{'symbol':'WSO2','price':55.6,'volume':100}";
Object json = new Gson().fromJson(eventObject.toString(),Object.class);
如何解析 JSON 字符串以获得正确格式的数字?
谢谢!
最佳答案
JSON 不区分仅定义单个数字类型的数字类型:数字。当您可以将 100 值视为整数、...或长整型、 double 型或浮点型(具体取决于您如何解释它)时,这是一个明显的歧义。从另一个角度看更多内容请参见以下讨论:How to get value as java.lang.Object from Gson? :JSON语法摘录:
- 值
- 字符串
- 数字
- 对象
- 数组
- 正确
- 错误
- 空
其中数字是:
- 数字
- 整数
- int frac
- int exp
- int frac exp
在 Gson 中,你不能通过反序列化到 java.lang.Object
来做到这一点因为 Gson 对于这种类型使用 ObjectTypeAdapter
总是parses a numeric value as a double ,Java最大数JsonReader
专为:
public final class ObjectTypeAdapter extends TypeAdapter<Object> {
...
@Override public Object read(JsonReader in) throws IOException {
...
case NUMBER:
return in.nextDouble();
...
最安全的做法就是提取值并将其转换为 java.lang.Number
(您可能会将其视为“未知”数字)并使用其方法,如 intValue()
, longValue()
, doubleValue()
等在调用站点。
关于java - 使用 Gson 从 JSON 字符串中提取正确格式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510419/