处理来自服务器的数组数据 (Android)

3

我的应用程序从服务器以数组的形式接收数据,enter image description here

我无法处理这些数据,以下是我的代码,请帮帮我。

 JSONObject jsonObject = new JSONObject(response);
  String name = jsonObject.getString("status");
                    String name1 = name.trim();
 if (name1.equals("success")) {

                        Toast.makeText(getApplicationContext(),"inside",Toast.LENGTH_LONG).show();
                        try {


                            JSONArray array = jsonObject.getJSONArray("data");

                            for (int i = 0; i < array.length(); i++) {


                                jsonObject = array.getJSONObject(i);


                                s_key = jsonObject.getString("initKey");
                                s_iv = jsonObject.getString("initIv");
                                sec_url = jsonObject.getString("url");
                                s_init_hash = jsonObject.getString("initHash");


                            }
                        } catch (JSONException e) {
                            e.printStackTrace();


        }
6个回答

1

没有JSONArray

 JSONObject jsonObject = new JSONObject(response);
      String name = jsonObject.getString("status");
                        String name1 = name.trim();
     if (name1.equals("success")) {

                            Toast.makeText(getApplicationContext(),"inside",Toast.LENGTH_LONG).show();
                            try {
                                   JSONObject  jsonObjectData = jsonObject .getJSONObject(i);
                                    s_key = jsonObjectData.getString("initKey");
                                    s_iv = jsonObjectData.getString("initIv");
                                    sec_url = jsonObjectData.getString("url");
                                    s_init_hash = jsonObjectData.getString("initHash");
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();


            }

将此代码改为:JSONObject jsonObjectData = jsonObject.getJSONObject(i); - AskNilesh

0

你的响应是 JSONObject 而不是 JSONArray,请检查它。

FYI

{ } 括号表示 JSONObject

[ ] 括号表示 JSONArray

按照以下方式解析你的 json

    JSONObject jsonObject = new JSONObject(response);
    String name = jsonObject.getString("status");
    String name1 = name.trim();
    if (name1.equals("success")) {

        Toast.makeText(getApplicationContext(), "inside", Toast.LENGTH_LONG).show();
        try {


            JSONObject jsonObjectData = jsonObject.getJSONObject("data");
            s_key = data.getString("initKey");
            s_iv = data.getString("initIv");
            sec_url = data.getString("url");
            s_init_hash = data.getString("initHash");


        } catch (JSONException e) {
            e.printStackTrace();


        }


    }

1
非常感谢您的时间,您的答案中有一个小错误:JSONObject jsonObjectData = jsonObject.getJSONObject("data"); - user8356857

0

数据不是Json数组,因为它以{}开头,它是Json对象

Json数组以[]开头

所以你需要使用

SONObject  jsonObjectData = jsonObject .getJSONObject(i);

0

当您在Android中使用JSON数据时,您将使用JSONArray来解析以数组括号开头的JSON。在JSON中,数组用于组织一组相关项目(可以是JSON对象)。

例如:

[{"name":"item 1"},{"name": "item2} ]

另一方面,当处理以大括号开头的JSON时,您将使用JSONObjectJSON对象通常用于包含与一个项目相关的键/值对。例如:

{"name": "item1", "description":"a JSON object"}

 JSONObject jsonObject = new JSONObject(response);
  String name = jsonObject.getString("status");
                    String name1 = name.trim();
 if (name1.equals("success")) {

                        Toast.makeText(getApplicationContext(),"inside",Toast.LENGTH_LONG).show();
                        try {
                              JSONObject data = jsonObject. getJSONObject("data");
        s_key = data.getString("initKey");
        s_iv = data.getString("initIv");
        sec_url = data.getString("url");
        s_init_hash = data.getString("initHash");
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();


        }

1
非常感谢您的时间,您的答案中有一个小错误:JSONObject jsonObjectData = jsonObject.getJSONObject("data"); - user8356857

0
 JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(response);
                    String name = jsonObject.getString("status");
                    String name1 = name.trim();
                    if (name1.equals("success")) {



                        JSONObject jsonObjectData = jsonObject.getJSONObject("data");
                        s_key = jsonObjectData.getString("initKey");
                        s_iv = jsonObjectData.getString("initIv");
                        sec_url = jsonObjectData.getString("url");
                        s_init_hash = jsonObjectData.getString("initHash");





                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }

0

响应 { "状态": "成功", "数据": {

    "initKey": "abc",
    "initHash": "cde",
    "initIv": "efg",
    "versionNo": "123 ",
    "url": "https://www.youtube.com"


}

}

代码

 try {

            JSONObject outerJsonObject=new JSONObject(response);
            String status=outerJsonObject.getString("status");
            if(status.equals("success"))
            {

                JSONObject innerJsonObjectData=outerJsonObject.getJSONObject("data");
                String initKey =innerJsonObjectData.getString("initKey");
                String initHash =innerJsonObjectData.getString("initHash");
                String initIv =innerJsonObjectData.getString("initIv");
                String versionNo =innerJsonObjectData.getString("versionNo");
            }

            } catch (JSONException e) {
            e.printStackTrace();
        }

注释

 /*

            {
                //outerJsonObject

                    "status":"success",

                    "data":                // innerJsonObjectData
                    {

                           "initKey":"abc",
                            "initHash": "cde",
                            "initIv": "efg",
                            "versionNo": "123 ",
                            "url": "https://www.youtube.com"

                    }


            }

*/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接