[英]can not print all the key and values of json array form json file
我是json的新手,但我在Google上有很多,但找不到解决方案。
这是我的json文件
{
"id": 1,
"firstname": "Katerina",
"languages": [
{
"lang": "en",
"knowledge": "proficient"
},
{
"lang": "fr",
"knowledge": "advanced"
}
]
}
我想获取语言数组的键和值,并按如下所示打印它们:
key is: lang and value is: en
key is: knowledge and value is: proficient
key is: lang and value is: fr
key is: knowledge and value is: advanced
我使用以下代码进行打印:
JSONParser parser = new JSONParser();
File file = new File("/Users/amzadhossain/Documents/jsonfile2.json");
FileReader reader = new FileReader(file);
JSONObject jsonObject = (JSONObject) parser.parse(reader);
JSONArray languages = (JSONArray) jsonObject.get("languages");
Map<String,String> map = new HashMap<String,String>();
List<Map<String, String>> lstmap = new ArrayList<Map<String, String>>();
Iterator<String> iter = null;
Iterator<String> iter2 = null;
for (int i =0; i<languages.size();i++){
JSONObject firstarr = (JSONObject) languages.get(i);
iter = firstarr.keySet().iterator();
iter2 = firstarr.values().iterator();
while(iter.hasNext()){
String key = (String)iter.next();
//String value = firstarr.toJSONString();
String value = (String)iter2.next();
map.put(key,value);
lstmap.add(i, map);
System.out.println(i+" ***** "+key + "#### " + map.get(key));
}
}
for(int i=0;i<lstmap.size();i++){
Map<String,String> mapget = lstmap.get(i);
for (Map.Entry<String, String> entry : mapget.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
}
但是问题是它只打印了最后一个键和值。请帮助。我只想通过使用json simple来解决这个问题。
检查下面的代码。
final JSONParser parser = new JSONParser();
final File file = new File("/Users/amzadhossain/Documents/jsonfile2.json");
final FileReader reader = new FileReader(file);
final JSONObject jsonObject = (JSONObject) parser.parse(reader);
final JSONArray languages = (JSONArray) jsonObject.get("languages");
List<Map<String, String>> lstmap = new ArrayList<Map<String, String>>();
Iterator<String> iter = null;
for (int i = 0; i < languages.size(); i++) {
JSONObject firstarr = (JSONObject) languages.get(i);
iter = firstarr.keySet().iterator();
while(iter.hasNext()){
final Map<String, String> map = new HashMap<String, String>();
String key = (String)iter.next();
Object value = firstarr.get(key);
map.put(key, value.toString());
lstmap.add(map);
System.out.println("key is "+key + " and value is " + value);
}
}
for (Map<String, String> map : lstmap){
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
}
这可能对您有帮助,
for(int i =0; i<languages.length();i++){
lstmap = new ArrayList<Map<String, Object>>();
JSONObject firstarr = (JSONObject) languages.get(i);
iter = firstarr.keySet().iterator();
while(iter.hasNext()){
String key = (String)iter.next();
Object value = firstarr.get(key);
System.out.println("key is "+key + "and value is " + value);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.