java如何在不使用trycatch的情况下测试JSOneElement是否为Number
public static void main(String[] args){
String str = "{\"a\":\"48.0\", \"b\":48.0, \"c\":\"this is a string\"}";
Gson gson = new Gson();
JsonObject obj = gson.fromJson(str, JsonObject.class);
for (Object key : obj.keySet()){
String keystr = key.toString();
if (obj.get(keystr).isJsonPrimitive()){
if (obj.get(keystr).getAsJsonPrimitive().isNumber()){
System.out.println(keystr+", getting as Number: "+obj.get(keystr).getAsFloat());
}else if (obj.get(keystr).getAsJsonPrimitive().isString()){
try{
System.out.println(keystr+", getting as String-Number: "+obj.get(keystr).getAsFloat());
}catch (NumberFormatException e){
System.out.println(keystr+", getting as String-String: "+obj.get(keystr).getAsString());
}
}
}
}
}
输出:
a, getting as String-Number: 48.0
b, getting as Number: 48.0
c, getting as String-String: this is a string
我有一个JsonObject,它比上面的测试用例复杂得多。其要点是数据以浮点数形式存储在字符串中(示例a)。有时,数据字符串中会出现实际字符串,如“null”或“unde”。有没有更好的方法来测试字符串是否真的是字符串,而不依赖try-catch NumberFormatException或外部库
共 (0) 个答案