Java Android解析Json提供空字符串
我正在尝试解析来自url的Json响应: 答复如下:Java Android解析Json提供空字符串,java,android,json,Java,Android,Json,我正在尝试解析来自url的Json响应: 答复如下: { "status": "success", "message": "Request Successfull", "messagetitle": "Success", "show": "false", "goback": "false", "marriages": [ { "marriagenum": "8", "marriage_from": "2015-09-04", "
{
"status": "success",
"message": "Request Successfull",
"messagetitle": "Success",
"show": "false",
"goback": "false",
"marriages": [
{
"marriagenum": "8",
"marriage_from": "2015-09-04",
"marriage_to": "2015-09-04",
"planner": {
"id": "9",
"fbid": "67656767676767",
"name": "dsds sd",
"imageurl": "https:\/\/graph.facebook.com\/545435544334423243\/picture?type=large"
},
"groom": {
"id": "1",
"fbid": "4333334344343",
"name": "X Y",
"imageurl": "http:\/\/www.page.com\/mobileapp\/uploads\/profilepics\/fdsfdsfdsfdsfds.jpg"
},
"bride": {
"id": "12",
"fbid": "455445454",
"name": "dada ssd",
"imageurl": "https:\/\/graph.facebook.com\/2343444344343432323\/picture?type=large"
}
}
]
}
我正在尝试获取“策划者”、“新郎”和“新娘”的“imageurl”
以下是我的java代码:
HttpEntity entity2 = response.getEntity();
String data2 = EntityUtils.toString(entity2);
JSONObject jsono2 = new JSONObject(data2);
JSONArray jarray2 = jsono2.getJSONArray("marriages");
for(int i=0;i<l;i++)
{
JSONObject object = jarray.getJSONObject(i);
JSONObject planner_object = object.getJSONObject("planner");
JSONObject groom_object = object.getJSONObject("groom");
JSONObject bride_object = object.getJSONObject("bride");
planner_image=planner_image+planner_object.optString("imageurl")+"\n";
String groom_image=groom_image+groom_object.optString("imageurl")+"\n";
String bride_image=bride_image+bride_object.optString("imageurl")+"\n";
}
Toast.makeText(getBaseContext(),planner_image,Toast.LENGTH_LONG).show();
HttpEntity entity2=response.getEntity();
字符串数据2=EntityUtils.toString(entity2);
JSONObject jsono2=新的JSONObject(数据2);
JSONArray jarray2=jsono2.getJSONArray(“婚姻”);
对于(int i=0;i我想我看到了这里的问题:
JSONArray jarray2 = jsono2.getJSONArray("marriages");
您正在访问JSONArray,然后在此处:
JSONObject object = jarray.getJSONObject(i);
您是从jarray获取对象(其中JSONArray称为jarray2?)
因此,您试图访问的所有对象(planner\u对象、groom\u对象、bride\u对象)都位于jarray2中,但您试图从jarray获取它们
此外,您正在使用,文档中显示:
如果存在按名称映射的值,则返回该值;如果不存在此类映射,则返回空字符串
这告诉我你访问的对象肯定是错误的,因为它们返回的是空的
将代码更改为:
JSONObject object = jarray2.getJSONObject(i);
你的for循环应该是这样的
for(int i=0;i<jarray2.length();i++)
for(int i=0;i问题中的代码似乎不完整。例如,jArray
是如何初始化的?您是否打算在循环中使用jArray2?在任何情况下,以下操作都有效:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test {
static String test = "{\n \"status\": \"success\",\n \"message\": \"Request Successfull\",\n \"messagetitle\": \"Success\",\n \"show\": \"false\",\n \"goback\": \"false\",\n \"marriages\": [\n {\n \"marriagenum\": \"8\",\n \"marriage_from\": \"2015-09-04\",\n \"marriage_to\": \"2015-09-04\",\n \"planner\": {\n \"id\": \"9\",\n \"fbid\": \"67656767676767\",\n \"name\": \"dsds sd\",\n \"imageurl\": \"https:\\/\\/graph.facebook.com\\/545435544334423243\\/picture?type=large\"\n },\n \"groom\": {\n \"id\": \"1\",\n \"fbid\": \"4333334344343\",\n \"name\": \"X Y\",\n \"imageurl\": \"http:\\/\\/www.page.com\\/mobileapp\\/uploads\\/profilepics\\/fdsfdsfdsfdsfds.jpg\"\n },\n \"bride\": {\n \"id\": \"12\",\n \"fbid\": \"455445454\",\n \"name\": \"dada ssd\",\n \"imageurl\": \"https:\\/\\/graph.facebook.com\\/2343444344343432323\\/picture?type=large\"\n }\n }\n ]\n}";
public static void main(String[] args) throws JSONException {
JSONObject jArray= new JSONObject(test);
JSONArray marrArray = jArray.getJSONArray("marriages");
for (int i = 0 ; i < marrArray.length(); i++) {
JSONObject object = marrArray.getJSONObject(i);
JSONObject planner_object = object.getJSONObject("planner");
JSONObject groom_object = object.getJSONObject("groom");
JSONObject bride_object = object.getJSONObject("bride");
System.out.println(planner_object.optString("imageurl"));
System.out.println(groom_object.optString("imageurl"));
System.out.println(bride_object.optString("imageurl"));
}
}
您的解决方案似乎是正确的,但是已经更改了一些代码,这应该是可行的
JSONObject jsono2 = new JSONObject(data2);
JSONArray jarray2 = jsono2.getJSONArray("marriages");
for(int i=0;i<jarray2.length(); i++)
{
JSONObject object = jarray2.getJSONObject(i);
JSONObject planner_object = object.getJSONObject("planner");
JSONObject groom_object = object.getJSONObject("groom");
JSONObject bride_object = object.getJSONObject("bride");
String planner_image = planner_image + planner_object.getString("imageurl")+"\n";
String groom_image = groom_image + groom_object.getString("imageurl")+"\n";
String bride_image = bride_image + bride_object.getString("imageurl")+"\n";
}
JSONObject jsono2=新的JSONObject(data2);
JSONArray jarray2=jsono2.getJSONArray(“婚姻”);
对于(int i=0;i您在哪里定义l
?请尝试将l
替换为jarray.length()
。此外,在哪里定义了planner\u image
?l是jarray.length(),planner\u image是一个公共字符串变量
JSONObject jsono2 = new JSONObject(data2);
JSONArray jarray2 = jsono2.getJSONArray("marriages");
for(int i=0;i<jarray2.length(); i++)
{
JSONObject object = jarray2.getJSONObject(i);
JSONObject planner_object = object.getJSONObject("planner");
JSONObject groom_object = object.getJSONObject("groom");
JSONObject bride_object = object.getJSONObject("bride");
String planner_image = planner_image + planner_object.getString("imageurl")+"\n";
String groom_image = groom_image + groom_object.getString("imageurl")+"\n";
String bride_image = bride_image + bride_object.getString("imageurl")+"\n";
}