Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSONTokener将字符串解析为JSONObject或JSONArray_Java_Json_Parsing_Rest - Fatal编程技术网

Java 使用JSONTokener将字符串解析为JSONObject或JSONArray

Java 使用JSONTokener将字符串解析为JSONObject或JSONArray,java,json,parsing,rest,Java,Json,Parsing,Rest,我正在使用以下代码处理来自服务器的REST响应: if (response.getEntity() != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); StringBuilder builder = new StringBuilder(); for (Stri

我正在使用以下代码处理来自服务器的REST响应:

if (response.getEntity() != null) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();
        for (String line = null; (line = reader.readLine()) != null;) {
            builder.append(line).append("\n");
        }           
        JSONTokener tokener = new JSONTokener(builder.toString());
        try {
            rr.jsonObject = new JSONObject(tokener);                
        } catch (JSONException e) {             
            e.printStackTrace();

            Log.d("parsing", "creating json array");
            try {
                rr.jsonArray = new JSONArray(tokener);
            } catch (JSONException e1) {                    
                e1.printStackTrace();
            }

        }
    }
如果响应是一个JSONObject,那么它可以正常工作,但是如果服务器返回一个JSONArray,那么第二个try块也会抛出,尽管它是正确的json

03-30 14:09:15.069: W/System.err(6713): org.json.JSONException: End of input at character 314 of [{"__className":"stdClass","char3code":"DEU","fips_name":"Germany","alternate_names":"Germany, Deutschland, Allemagne, Alemania"},{"__className":"stdClass","char3code":"USA","fips_name":"United States","alternate_names":"United States of America, Vereinigte Staaten von Amerika, \u00c9tats-Unis, Estados Unidos"}]

我认为失败的原因是,当您调用
newjsonarray(tokener)
时,
tokener
不再位于令牌流的开头。尝试创建一个新的
JSONTokener
实例,用于第二次尝试解析..

是的,就是这样。非常感谢。