有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案