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

Java get()为特定键返回null或空对象,java,android,json,get,Java,Android,Json,Get,这是我的建议 以下工作: jsonObject.get("title").getAsString(); jsonObject.get("author").getAsJsonObject().get("profile_photo").getAsString(); 但是jsonObject.get(“primary_photo”).getAsString()(来自第60行)返回一个不受支持的异常:null错误。我尝试将getAsString()替换为toString(),但后者返回一个空字符串。试

这是我的建议

以下工作:

jsonObject.get("title").getAsString();
jsonObject.get("author").getAsJsonObject().get("profile_photo").getAsString();
但是
jsonObject.get(“primary_photo”).getAsString()
(来自第60行)返回一个不受支持的异常:null错误。我尝试将
getAsString()
替换为
toString()
,但后者返回一个空字符串。

试试这个

在代码中使用
optJSONObject
optString
。根是
[]
,因此您应该使用
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();
}
试试看{
JSONArray JSONArray=新JSONArray(响应);
for(int i=0;i
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();
}
JsonArray jsonElements=new JsonParser().parse(response.getAsJsonArray();
对于(int i=0;i
我认为问题在于,JSON响应包含一个数组。您必须从响应字符串创建一个JSONArray,然后对其进行迭代以获得您的值。或者,如果此数组始终包含一个对象:

JSONArray jsonArray = new JSONArray(response);
JSONObject jsonObject = jsonArray.getJSONObject(0);
试试这个:

try {
            JSONArray jarr=new JSONArray(response);   // response is whole json response
            for (int i=0;i<jarr.length();i++){
                JSONObject jobj=jarr.getJSONObject(i);   
                String primary_photo=jobj.getString("primary_photo");
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
试试看{
JSONArray jarr=新JSONArray(响应);//响应是整个json响应
对于(int i=0;i
试试这个,
试一试{
JSONArray JSONArray=新JSONArray(响应);
for(int i=0;i
你在代码中使用了哪个JsonObject类?看看这个,我也遇到了同样的问题。@Elka我导入了这个
com.google.gson.JsonObject;
。get方法是在
for
循环中执行的。为什么要使用gson?Android自带了一个库:org.json.JSONObjectI与作者及其用户没有任何问题ted对象配置文件照片。我的问题是
primary\u photo
键(第60行)。我编辑了它。@bargain23这个
author.optString(“author”)
应该是
author.optString(“primary\u photo”)
?它应该是
字符串primary\u photo=jsonArray.optJSONObject(I).optString(“primary\u photo”)
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();
}