下面是我的java代码
Type relMapType = new TypeToken<Map<String, Map<String, Map<String ,Map<String, List<Set<ProfileData>>>>>>>(){}.getType();
InputStream is = new FileInputStream("D:\\work.json");
String jsonTxt;
try {
jsonTxt = IOUtils.toString(is);
System.out.println(jsonTxt);
JSONObject jsons = new JSONObject(jsonTxt);
String jString= gson.toJson(jsons);
gson.fromJson(jString, relMapType);
} catch (IOException e) {
e.printStackTrace();
}
以下是&#34; work.json&#34;中的json数据。文件
{
"string1":{
"string2":{
"string3":{
"string4":[
{
"primaryKey":{
"projectCode":"PC",
"type":"type1",
"code1":"data1",
"code2":"data2"
},
"status":"status1",
"Id":"123",
"frequency":"freq",
"destFre":"destFreq"
}
]
}
}
}
}
当我运行代码低于异常时。任何人都可以帮助我吗?
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 5 column 21
at com.google.gson.Gson.fromJson(Gson.java:806)
at com.google.gson.Gson.fromJson(Gson.java:761)
at com.google.gson.Gson.fromJson(Gson.java:710)
at com.JsonExample.main(JsonExample.java:97)
引起:java.lang.IllegalStateException:预期BEGIN_ARRAY但在第5行第21行是BEGIN_OBJECT
答案 0 :(得分:2)
您在Set
的{{1}}内使用了List
。两者都是List<Set<ProfileData>>
,因此将被视为数组。 JSON的相同部分是一个对象数组。移除Collection
或Set
,它应该有效。