下面给出的是我遇到麻烦的ccode snipet和我正在使用jdk 8.我在代码的粗体行中遇到错误,对于循环语句。我也提到了错误。:
做{
jobid = br.readLine();
metajson = br.readLine();
JSONObject obj = (JSONObject) jsonParser.parse(metajson);
System.out.println(jobid+" "+obj.toString());
//The below one should work
****for (HashMap.Entry<String, String> entry : obj.entrySet())****
{
System.out.println(entry.getKey() + "/" + entry.getValue());
}
}
错误: 线程“main”中的异常java.lang.Error:未解决的编译问题: PropertyEntry无法解析为某种类型 重复的本地变量条目 无法将条目解析为某种类型 在com.journaldev.json.Insert3.main(Insert3.java:64) 此行中出现错误,指出“类型不匹配:无法从元素类型对象转换为Map.Entry&gt;”
我也尝试了Property.Map()和concept.Map(),但同样存在问题。我也导入了整个集合类。但我不知道错误没有解决。
答案 0 :(得分:0)
因为返回的条目集的类型为<String, JSONObject>
而不是<String, String>
。
以下代码编译:
Set<Entry<String, JSONObject>> entrySet = jsonObject.entrySet();
for (Entry<String, JSONObject> entry : entrySet) {
String key = entry.getKey();
JSONObject innerJsonObject = entry.getValue();
}
无论如何,这个库(simple-json)的设计很糟糕。 JsonObject从HashMap原始类型继承自己(没有填充它的泛型类型声明),因此在编译时不知道生成的entrySet的类型。
提示:使用GSon或其他json库代替。