json 字串 在未知key的情況下取出key和value
阿新 • • 發佈:2018-11-29
方法一使用alibaba.fastjson如下:
import com.alibaba.fastjson.JSONObject; String content="{\n" + "\"specified\":\"true\",\n" + "\"user\":\"false\",\n" + "\"primaryGroup\":\"true\"\n" + "}";//或String content="{\"浙江\":19,\"上海\":18,\"江蘇\":5,\"福建\":6}"; System.out.println("==================================="); //生成的是一個JSONObject物件(是一個map型別的物件) JSONObject jsonObject=JSONObject.parseObject(content); //獲取到map,取值即可 for (Map.Entry<String, Object> entry : jsonObject.entrySet()){ System.out.println(entry.getKey() + ":" + entry.getValue()); }
===
但是:fastJson在把json格式的字串轉換成JSONObject的時候,使用的是HashMap,所以排序規則是根據HASH值排序的,如果想要按照字串順序遍歷JSON屬性,需要在轉換的時候指定使用LinkedHashMap代替HashMap。
請參考:https://blog.csdn.net/newxcjy/article/details/82985184
、、、
public static void main(String[] args) {
String jsonStr = “{“key”:“key”,“value”:“value”}”;
System.out.println("無序遍歷結果:"); JSONObject jsonObj = JSON.parseObject(jsonStr); for (Map.Entry<String, Object> entry : jsonObj.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("-------------------"); System.out.println("有序遍歷結果:"); LinkedHashMap<String, String> jsonMap = JSON.parseObject(jsonStr, new TypeReference<LinkedHashMap<String, String>>() { }); //獲取到map然後取出即可 for (Map.Entry<String, String> entry : jsonMap.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
方法二:使用jackson(推薦)
import com.fasterxml.jackson.databind.ObjectMapper; String jsonStr = "{\"key\":\"key\",\"value\":\"value\"}"; Map<String, String> jsonMap = new HashMap<>(); ObjectMapper mapper = new ObjectMapper(); try { jsonMap = mapper.readValue(jsonStr, Map.class ); } catch (IOException e) { // TODO handle exception properly } //獲取到了map for(Map.Entry<String, String> entry : jsonMap.entrySet()){ System.out.println(entry.getKey() + ":" + entry.getValue()); }