如何获取数组中json子级的值 [英] How to get the value of json child in an array

查看:332
本文介绍了如何获取数组中json子级的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用android studio如何将bio的值和此JSON文件中的链接的值更改为字符串

How can the value of bio and the value of link in this JSON file to a string i am using android studio

{
  "Amber": [
    {
      "Info": {
        "name": "Amber",
        "bio": "Turkish-Cypriot",
        "image": "null"
      },
      "Class": {
        "Adorable": {
          "name": "",
          "link": ""
        },
        "IronAge": {
          "name": "",
          "link": ""
        }
      }
    }
  ]
}

我的Java代码

    private void parseResult_GetWebData(String result) {
        try {
            JSONObject response = new JSONObject(result);
            JSONArray jsonArray = response.getJSONArray("Amber");

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.optJSONObject(i);
                JSONObject jsonArray1 = jsonObject.getJSONObject("Info");
                JSONObject jsonArray2 = jsonObject.getJSONObject("Class");

                    String bio = jsonArray1.optString("bio");
                    String link = jsonArray2.optString("link");



            }

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

我的代码没有得到任何结果,我不知道确切在做什么

With my code am not getting any result, i don,t know what exactly am doing work

推荐答案

您应该使用数据模型,即标准方式.

You should use data model i.e standard way.

Pojo主要课程

public class MyModel
{
    private Amber[] Amber;

    public Amber[] getAmber ()
    {
        return Amber;
    }

    public void setAmber (Amber[] Amber)
    {
        this.Amber = Amber;
    }

    @Override
    public String toString()
    {
        return "[Amber = "+Amber+"]";
    }
}

Amber.java

Amber.java

public class Amber
{
    private Class Class;

    private Info Info;

    //Can not getClass name of this method becuase getClass method is define in Object class so make it just getClassi or anything else.
    public Class getClassi ()
    {
        return Class;
    }

    public void setClass (Class Class)
    {
        this.Class = Class;
    }

    public Info getInfo ()
    {
        return Info;
    }

    public void setInfo (Info Info)
    {
        this.Info = Info;
    }

    @Override
    public String toString()
    {
        return "Amber [Class = "+Class+", Info = "+Info+"]";
    }
}

Class.java

Class.java

public class Class
{
    private Adorable Adorable;

    private IronAge IronAge;

    public Adorable getAdorable ()
    {
        return Adorable;
    }

    public void setAdorable (Adorable Adorable)
    {
        this.Adorable = Adorable;
    }

    public IronAge getIronAge ()
    {
        return IronAge;
    }

    public void setIronAge (IronAge IronAge)
    {
        this.IronAge = IronAge;
    }

    @Override
    public String toString()
    {
        return "Info [Adorable = "+Adorable+", IronAge = "+IronAge+"]";
    }
}

IronAge.java

IronAge.java

public class IronAge
{
    private String name;

    private String link;

    public String getName ()
    {
        return name;
    }

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

    public String getLink ()
    {
        return link;
    }

    public void setLink (String link)
    {
        this.link = link;
    }

    @Override
    public String toString()
    {
        return "IronAge [name = "+name+", link = "+link+"]";
    }
}

Adorable.java

Adorable.java


public class Adorable
{
    private String name;

    private String link;

    public String getName ()
    {
        return name;
    }

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

    public String getLink ()
    {
        return link;
    }

    public void setLink (String link)
    {
        this.link = link;
    }

    @Override
    public String toString()
    {
        return "Adorable [name = "+name+", link = "+link+"]";
    }
}

Info.java

Info.java

public class Info
{
    private String image;

    private String name;

    private String bio;

    public String getImage ()
    {
        return image;
    }

    public void setImage (String image)
    {
        this.image = image;
    }

    public String getName ()
    {
        return name;
    }

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

    public String getBio ()
    {
        return bio;
    }

    public void setBio (String bio)
    {
        this.bio = bio;
    }

    @Override
    public String toString()
    {
        return " class [image = "+image+", name = "+name+", bio = "+bio+"]";
    }
}

现在使用 GSON 将JSON数据解析为模型类.

Now use GSON to parse JSON data to model class.

这是 GSON

dependencies {
  implementation 'com.google.code.gson:gson:2.8.6'
}

public void parse(String jsonString){
        Gson gson = new Gson();
        MyModel model = gson.fromJson(jsonString, MyModel.class);
        for(Amber amber : model.getAmber()){
            //TO GET Links
            String link1 = amber.getClassi().getAdorable().getLink();
            String link2 = amber.getClassi().getIronAge().getLink(); 
        }
    }


您可以使用将JSON转换为模型pojo类.

You can use this to convert JSON to model pojo classes.

这篇关于如何获取数组中json子级的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆