如何访问嵌套JSON对象中的数据?

时间:2017-02-16 04:58:54

标签: android json

我有一些API提供的数据,例如这是数据,这只是数据的一部分,但这是我需要访问的部分

join

问题是如何访问category_image里面的cover_url里面的“url”,到目前为止,我已经能够从带有setter和getter以及适配器的Model类访问它,但我不知道如何我可以访问嵌套有setter和getter的数据我必须使用setter和getter来做,因为我有一个适配器类,我将所有数据放入de cardview然后我将它加载到片段中的回收器,请任何帮助都会很棒谢谢! 我的模型是这样的

Business.java

  "logo_url_string": null,
                "name": "google",
                "category_image": {
                    "id": 24,
                    "cover_url": {
                        "url": "http://",
                        "icon_circle": {
                            "url": "http://"
                        }

我使用和适配器

访问该数据

Adapter.java

public class Business {

    private String name, description, email, website, logo_url_string,cover_url_string;


    public Business(){}
public class Images{

}

    public Business(String name,  String logo_url_string) {

        this.name = name;

        this.logo_url_string = logo_url_string;


    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String getLogo_url_string() {
        return logo_url_string;
    }

    public void setLogo_url_string(String logo_url_string) {
        this.logo_url_string = logo_url_string;
    }

3 个答案:

答案 0 :(得分:0)

试试这个,

    try {
        JSONObject objResult = new JSONObject(response);

        String name = objResult.getString("name");
        JSONObject category_image_obj=objResult.getJSONObject("category_image");
        JSONObject cover_url_obj=category_image_obj.getJSONObject("cover_url");
        String url = cover_url_obj.getString("url");

         ArrayList premiumsList =new ArrayList<>();
         premiumsList.add(new Business(name,url);
        //call adapter here


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

答案 1 :(得分:0)

首先你的json是错的。如果你的json是这样的,

"

试试这个

{
"logo_url_string":null,
"name":"google",
"category_image":{
"id":"24",
"cover_url":{
"url":"http://",
"icon_circle":{
"url":"http://"
          }
     }
   }
 }
  

此外,您可以使用this为getter和setter制作   嵌套的json。

答案 2 :(得分:0)

如果您的JSON响应如下,那么您可以解析使用以下java代码。

{
    "contacts": [
        {
                "id": "c200",
                "name": "Android Developer",
                "email": "android.developer@gmail.com",
                "address": "xx-xx-xxxx,x - street, x - country",
                "gender" : "male",
                "phone": {
                    "mobile": "+91 0000000000",
                    "home": "00 000000",
                    "office": "00 000000"
                }
        }
  ]
}

Java代码,您可以在其中解析JSON。我希望你能得到答案。

@Override
protected Void jsonParsing(String jsonString) {


    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
    // Store a json string in string variable
    String jsonStr = jsonString;

    Log.e(TAG, "Response from url: " + jsonStr);

    if (jsonStr != null) {
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);

            // Getting JSON Array node
            JSONArray contacts = jsonObj.getJSONArray("contacts");

            // looping through All Contacts
            for (int i = 0; i < contacts.length(); i++) {
                JSONObject c = contacts.getJSONObject(i);

                String id = c.getString("id");
                String name = c.getString("name");
                String email = c.getString("email");
                String address = c.getString("address");
                String gender = c.getString("gender");

                // Phone node is JSON Object
                JSONObject phone = c.getJSONObject("phone");
                String mobile = phone.getString("mobile");
                String home = phone.getString("home");
                String office = phone.getString("office");

                // tmp hash map for single contact
                HashMap<String, String> contact = new HashMap<>();

                // adding each child node to HashMap key => value
                contact.put("id", id);
                contact.put("name", name);
                contact.put("email", email);
                contact.put("mobile", mobile);

                // adding contact to contact list
                contactList.add(contact);
            }
        } catch (final JSONException e) {
            Log.e(TAG, "Json parsing error: " + e.getMessage());
        }
    } else {
        Log.e(TAG, "Couldn't get json from server.");
    }
}

有关JSON Parsing的更多详情,请read this documentation。其他read this tutorial ,了解如何解析JSON