您的JSON有效-但您的映射类无效(部分不匹配)。特别是,
files无法将类的属性映射为
Map<String,String>给定JSON中的a。很难推荐一种备用结构来存储数据而又不会看到较大的示例,但是通常在JSON结构与Java类之间进行映射时。此JSON:
"files": [ { "folder1": "file.txt" }, { "folder1/folder2": "file.cfg" }]表示包含对象的数组,其中每个对象最好表示为地图。因此,实质上是地图列表。因此,您的Java对象应为:
public class CFS { private List<Map<String, String>> files = new ArrayList<Map<String, String>>( 4); private List<String> directories = new ArrayList<String>(4); // Constructors, setters/getters}请注意,我已通过将您的属性设为私有并添加getter / setter来更正了这些属性。使用上面定义的类,您的程序应该可以正常工作。
final Gson gson = new GsonBuilder().create();final CFS results = gson.fromJson(json, CFS.class);Assert.assertNotNull(results);Assert.assertNotNull(results.getFiles());System.out.println(results.getFiles());
产生:
[{folder1=file.txt}, {folder1/folder2=file.cfg}]但是,如果您发现自己需要保留当前
CFS结构,则需要手动将JSON解析到其中。



