我需要使用 JsonReader
从 HttpURLConnection
读取 JSON 响应。为了确定下一个令牌的类型,我使用了 JsonReader.peek() 方法,该方法返回一个 JsonToken。但是,我必须区分下一个令牌是 Java 的 double
、long
还是 int
,以便可以使用 JsonReader.next*()
方法获取令牌,因为如果下一个令牌是 Java 的 double
、long
或 int
,则返回 NUMBER
。以下是我的代码:
final Map<String, Object> results = new HashMap<>();
while (jsonReader.hasNext()) {
final String name = jsonReader.nextName();
switch (jsonReader.peek()) {
case BOOLEAN:
results.put(name, jsonReader.nextBoolean());
break;
case NAME:
results.put(name, jsonReader.nextName());
break;
case NULL:
results.put(name, null);
break;
case NUMBER:
// results.put(name, jsonReader.nextInt()); TODO: Find out how to differentiate between int, long and double
break;
case STRING:
results.put(name, jsonReader.nextString());
break;
default:
jsonReader.skipValue();
break;
}
}
有没有办法在不使用JSONObject的情况下检查下一个令牌的类型是double、long还是int?
o instanceof JSONObject
总是为假。 - user5404864