(Android)如何从JSON获取数据以在listview

时间:2015-07-14 04:02:59

标签: java android json listview gson

这是我的JSON数据

{
    "success": "1",
    "results": [
        {
            "type": "1.popmusic",
            "posts": [
                {
                    "music": "1.AAA"
                },
                {
                    "music": "2.BBB"
                }
            ]
        }
    ]
}

我需要点击某种音乐,例如我点击我的列表视图中的“popmusic”然后,意图用新的活动来播放音乐中的音乐,来自我的json它必须显示“1.AAA”和“2。 BBB“在列表视图上。

我无法从我的json获得“帖子”。我怎么能得到它。

这是Blog1 Class

public class Blog1 {
    String success;
    List<Post> results;
    public List<Post> getResults() {
        return results;
    }

}

这是Post1 class

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

public String getAuthor() {
    return author;
}

// Getter and Setter

这是main class

  private void showData(String jsonString) {
        Gson gson = new Gson();
        Blog1 blog = gson.fromJson(jsonString, Blog1.class);
        List<Post> results = blog.getResults();

        mAdapter = new CustomAdapter1(this, results);
        mListView.setAdapter(mAdapter);


}

2 个答案:

答案 0 :(得分:0)

您可以使用in build android JSON库

参考How to get json array values in android?

参考android get json array nested in array

首先你需要得到结果

JSONArray json2 = json.getJSONArray("results");

然后在里面循环(我假设第一个元素为0)

JSONObject json3 = json2.getJSONObject(0);

然后你需要发帖子

JSONArray json4 = json3.getJSONArray("posts");

然后获得你可以循环json4

---编辑---

我看到你正在使用Gson,但你的类结构应该是

public class Blog {
    String success;
    List<Result> results;
    public List<Result> getResults() {
        return results;
    }
}

public class Result {
   String type;
   public String getType() {
       return type;
   }
   List<Post> posts;
   public List<Post> getPosts() {
        return posts;
   }
}

public class Post {
   String music;
   public String getMusic() {
       return music;
   }
}

在您的主要代码中

Blog blog = gson.fromJson(jsonString, Blog.class);
//I am assuming 0th item for both
blog.getResults().get(0).getPosts().get(0).getMusic();

如果您正在构建自定义适配器,那么假设您要显示一个博客条目的所有帖子,那么您可以获得所有帖子

List<Post> posts = blog.getResults().get(0).getPosts()

帖子传递给自定义适配器。

如果您有两个适配器,那么<​​strong> blog.getResults()用于第一个适配器,然后单击该适配器的项目 results.get(itemindex).getPosts()第二个适配器

答案 1 :(得分:0)

你的JSON

{
    "success": "1",
    "results": [
        {
            "type": "1.popmusic",
            "posts": [
                {
                    "music": "1.AAA"
                },
                {
                    "music": "2.BBB"
                }
            ]
        }
    ]
}

实际上是映射到

public class Response {
    private String success;
    private List<Result> results;

    //getter, setter
}

public class Result {
    private String type;
    private List<Post> posts;

    //getter, setter
}

public class Post {
    private String music;

    //getter, setter
}

然后你可以让GSON从中获得Result