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