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();
}