1. 程式人生 > >json 字串 在未知key的情況下取出key和value

json 字串 在未知key的情況下取出key和value

方法一使用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());
			}