首页 > 解决方案 > 在 Java 中,如何验证 String 是否可以是 JSONArray 以及为什么您的答案比我在我的问题中展示的方法更好

问题描述

当我收到 JSON 字符串以验证它是否是 JSONArray 时,我进行了此验证,但我认为那里一定有更好的东西,我从休息服务连接读取 inputStream,然后我将检查该字符串是否是 JSONArray或者只是一个 JSONObject,在它进入验证 "charAt(0) == '[' 它不会进入验证 cadenaJSON instanceof JSONArray,你们知道更好的方法吗?

 while ((cadenaLectura = br.readLine()) != null) {
                    cadenaJSON = cadenaJSON.concat(cadenaLectura);
            }
            conn.disconnect();
            // If cadenaJSON starts with [ its because its a JSONArray
            if (cadenaJSON.charAt(0) == '[') {
                // This one isn't working
                if ((Object) cadenaJSON instanceof JSONArray) {
                    System.out.println("Soy un JSONArray");
                }
                JSONArray jsonArray = new JSONArray(cadenaJSON);
                return jsonArray.toString();
            } else {
                JSONObject json = new JSONObject(cadenaJSON);
                return json.toString();
            }

标签: javajsonvalidation

解决方案


如评论中所述,您确实应该使用 JSON 库来解析您的响应并检查您是否获得了有效的数组。这是一个例子:

import org.json.*;

....

public boolean isJSONArray(String input) {
    try {
        new JSONArray(input);
        return true;
    } catch (JSONException ex) {
        return false;
    }
}

请注意,charAt(0) == '['当您有格式错误的 JSON(即不是 JSON 字符串)或在开始字符之前有空格时,该方法会给出不正确的结果[。考虑这个字符串:["string 1", nothing


推荐阅读