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

标签 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 (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 block 也会抛出异常,尽管它是正确的 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"}]

最佳答案

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

关于java - 使用 JSONTokener 将字符串解析为 JSONObject 或 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718919/

相关文章:

javascript - JSON.parse 在 JSON 数据的第 1 行开头引发意外字符错误

java - 如何管理java中不直接支持的时区

java - 使用 ant 和 Jenkins 发起 war 时出现问题

mysql - 将常规 SQL 结果数组保存为另一个表中的条目确实减少了查询次数,好主意与否?

security - 内容安全策略报告-uri 未被识别

Java/解析 : how to replace & symbol but not html codes

java - Java 1.8 堆栈溢出错误

java - Java中JProgress Bar完成100%后才显示结果

javascript - 使用 Javascript 读取从 REST API 返回的 JSON 数据

java - 使用 GSON 解析 JSON 对象列表