java - 加载 JSON 数组失败

标签 java android json

我作为 HTTP 响应获得的 JSON 字符串/数组位于一行中,如下所示:

[{
        "haendlerName": "Zielpunkt",
        "shops": [{
            "shopId": 243779,
            "ort": "Wien",
            "strasse": "Erdbergstraße 61",
            "plz": "1030",
            "lat": 48.19867,
            "lon": 16.400263,
            "distance": 0.14937061106081023,
            "openinghours": null
        }],
        "imageLink": "http://images.schnapp.at/images/zielpunkt__e349e2a937b5bf4f78e0fb3063b1fca8.png",
        "account_id": 171619
    }, ...

我像这样加载它:

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
response = httpclient.execute(httpGet);
HttpEntity resEntity = response.getEntity(); 
String response2=EntityUtils.toString(resEntity);
JSONArray finalResult = new JSONArray(response2);

编辑:工作版本!

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);    
response = httpclient.execute(httpGet);
String json = EntityUtils.toString(response.getEntity());
finalResult = new JSONArray(json);

但是在最后一行它崩溃了,我得到的唯一错误是 NullPointerException。 我检查了标记器的内容,似乎没问题。 还检查了整个输入(来自 http 响应的字符串),它是一个有效的 JSON 字符串。

值得一提的是,主数组中的 JSONObject 还包含一个子数组。

知道什么可能导致崩溃吗?或者我做错了什么?

最佳答案

删除 BufferedReaderString jsonJSONTokener tokener。试试这个方法

String json = EntityUtils.toString(response.getEntity());
JSONArray finalResult = new JSONArray(json);

EntityUtils.toString 读取 Entity 的内容并将其作为 String 返回

你应该替换:

BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
    String json = reader.readLine();
    JSONTokener tokener = new JSONTokener(json);
    JSONArray finalResult = new JSONArray(tokener);

String json = EntityUtils.toString(response.getEntity());
JSONArray finalResult = new JSONArray(json);

关于java - 加载 JSON 数组失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17490576/

相关文章:

android - 基于 ICS 的日历小部件的 Gridview

javascript - Angularjs 在使用分页时无法显示 orderBy

java - 在android自定义适配器中将动态图像设置为ListView

android - 如何为透明ImageView添加高程[android]

java - Android 可点击位图图像仅在 java 中

javascript - 在数据库中获取多个复选框结果(JSP PAGE)

arrays - 使用 Vapor3 将多条记录插入数据库

android - 从 Google Cloud Firestore 获取 JSON 对象

java - 在自定义 Servlet 中不支持 POST 作为 Spring Boot 中的@Bean

java - 我在 android studio 中运行代码时遇到错误