Java Android解析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", "

我正在尝试解析来自url的Json响应:

答复如下:

{
  "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";

 }