我是java / Android的初学者,我尝试用Gson解析JSON。
我对文件部分有些困难。 根据我的阅读,我应该使用MapHash,但我不确定如何在此代码中使用它
这是我的主要课程
InputStream source = retrieveStream(url);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
SearchResponse response = gson.fromJson(reader, SearchResponse.class);
进行解析的类
public class SearchResponse {
public List<Podcast> podcasts;
class Podcast {
@SerializedName("files")
private List<File> files;
@SerializedName("format")
private String format;
@SerializedName("title")
private String title;
class File {
private String ValueX;
private String URLX;
}
}
}
json结构
{
"podcasts": [
{
"files": [
{"NameA": "ValueA"},
{"NameB": "ValueB"},
{"...": "..."}
],
"format": "STRING",
"title": "STRING"
}
]
}
感谢您的帮助
这是我尝试解析的JSon结构的编辑文件 http://jsontest.web44.net/noauth.json
答案 0 :(得分:5)
在File
课程中,您有2个属性:ValueX
和URLX
。但是在您的JSON中,您有2个字段NameA
和NameB
...
JSON响应中的名称和您的班级必须匹配,否则您将无法获得任何价值......
除此之外,你的班级结构看起来很好,你的解除代码看起来也很好......我认为你不需要任何HashMap
......
编辑:考虑到您的评论,您可以使用HashMap
。您可以使用以下方式更改Podcast
课程:
@SerializedName("files")
private List<Map<String,String>> files;
你应该正确解析它。
您必须使用List
,因为您有一个JSON数组(由[ ]
包围),然后您可以使用Map
来允许不同的字段名称。
请注意,您必须删除File
类...