如何使用json对象获取数据并在listivew中显示?

时间:2015-09-10 02:51:40

标签: java android json eclipse

我有像这样的JSON

{

    "data": 

[

{

    "id": 1,
    "Name": "Choc Cake",
    "Image": "1.jpg",
    "Category": "Meal",
    "Method": "",
    "Ingredients": 

[

{

    "name": "1 Cup Ice"

},

        {
            "name": "1 Bag Beans"
        }
    ]

},
{

    "id": 2,
    "Name": "Ice Cake",
    "Image": "dfdsfdsfsdfdfdsf.jpg",
    "Category": "Meal",
    "Method": "",
    "Ingredients": 

[

                {
                    "name": "1 Cup Ice"
                }
            ]
        }
    ]

}

我正在使用JSON Object来对数据进行反序列化

这就是我想要的

JSONObject jsonObj = new JSONObject(jsonStr);
String first = jsonObj.getJSONObject("data").getString("name");
System.out.println(first);

但是,一个人似乎得到了这个名字或任何东西 不确定我做错了什么?

然后我试图将它显示到列表视图中但尚未到达那个部分

4 个答案:

答案 0 :(得分:3)

数据是JSON数组,而不是JSONObject 尝试:jsonObj.getJSONArray(" data")。getJSONObject(0).getString(" name") 还要注意getString和optString之间的区别,如果你不想在null上使用异常,请使用后者。

答案 1 :(得分:3)

首先从下面的方法解析你的Json,

private ArrayList<String> getStringFromJson(String jsonStr)
{
    ArrayList<String> mNames = new ArrayList<String>();
    JSONArray array = new JSONArray(jsonStr);
    for (int i = 0; i < array.length(); i++) {
        JSONObject row = array.getJSONObject(i);
        mNames= row.getString("Name");
    }
    return mNames;
}

答案 2 :(得分:2)

try {
     JSONObject jsonObj = new JSONObject(jsonStr);
     jsonObj.getJSONArray("data").getJSONObject(0).getString("name")
} catch (JSONException e) {

}

数据是一个json数组。将getJsonObject用于json对象。

请参阅此example创建一个ListView,并使用来自json对象的数据填充它的适配器。

答案 3 :(得分:0)

使用GSON代替JSON。希望它可以帮到你。

  GsonBuilder gsonBuilder = new GsonBuilder();
  Gson gson = gsonBuilder.create();
    List<Data> datas= new ArrayList<Data>();
    datas= Arrays.asList(gson.fromJson(jsonString, Data[].class));

    public class Ingredients {
        public String getName() {
            return name;
        }

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

        private String name;
    }




public class Data {

    private int id;
    private String Name;
    private String Image;
    private String Category;
    private String Method;

    public List<Ingredients> getIngredients() {
        return Ingredients;
    }

    public void setIngredients(List<Ingredients> ingredients) {
        Ingredients = ingredients;
    }

    private List<Ingredients> Ingredients = new ArrayList<Ingredients>();


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getImage() {
        return Image;
    }

    public void setImage(String image) {
        Image = image;
    }

    public String getCategory() {
        return Category;
    }

    public void setCategory(String category) {
        Category = category;
    }

    public String getMethod() {
        return Method;
    }

    public void setMethod(String method) {
        Method = method;
    }



}