Java jsonObject.get()为特定键返回null或空对象

时间:2017-09-29 07:20:18

标签: java android json get

这里是JSON response

以下作品:

jsonObject.get("title").getAsString();
jsonObject.get("author").getAsJsonObject().get("profile_photo").getAsString();

jsonObject.get("primary_photo").getAsString()(来自第60行)返回Unsupported Exception:null错误。我尝试用getAsString()替换toString(),但后者返回一个空字符串。

4 个答案:

答案 0 :(得分:1)

试试这个

在代码中使用optJSONObjectoptString。根目录是[],因此您应该使用JSONArray

try {
    JSONArray jsonArray = new JSONArray(response);
    for (int i = 0; i < jsonArray.length(); i++) {
         //  use optJSONObject
         JSONObject author = jsonArray.optJSONObject(i).optJSONObject("author");
         // use optString , it did not return null
         String profile_photo = author.optString("profile_photo");
         String primary_photo = jsonArray.optJSONObject(i).optString("primary_photo");
    }
} catch (JSONException e) {
        e.printStackTrace();
}

<强> GSON

JsonArray jsonElements = new JsonParser().parse(response).getAsJsonArray();
for (int i = 0; i < jsonElements.size(); i++) {
        JsonObject jObject = jsonElements.get(i).getAsJsonObject();
        // edited here 
        String primary_photo = jObject.get("primary_photo").getAsString();
        JsonObject author = jObject.getAsJsonObject("author");
        String profile_photo = author.get("profile_photo").getAsString();
}

答案 1 :(得分:1)

我认为问题是,您的JSON响应包含一个数组。您必须从响应字符串创建一个JSONArray,然后迭代它以获取您的值。或者,如果此数组始终包含一个对象:

JSONArray jsonArray = new JSONArray(response);
JSONObject jsonObject = jsonArray.getJSONObject(0);

答案 2 :(得分:1)

试试这个:

app.constants.ts

答案 3 :(得分:1)

Try this,

try {
    JSONArray jsonArray = new JSONArray(response);
    for (int i = 0; i < jsonArray.length(); i++) {

         JSONObject author = jsonArray.get(i).getJSONObject"author");

         String profile_photo = author.getString("author");
    }
} catch (JSONException e) {
        e.printStackTrace();
}