springboot中需要导入依赖 :
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
fastjson
FastJson是用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
(1)速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。
(2)功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
(3)无依赖,能够直接运行在Java SE 5.0以上版本
FastJson对于json格式字符串的解析主要用到了一下三个类:
(1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
(2)JSONObject:fastJson提供的json对象。
(3)JSONArray:fastJson提供json数组对象。
一些个人的使用
//自己构造JSON数据
JSONObject jsonObject = new JSONObject();
jsonObject .put("XX",xxx);
jsonObject .get("XX");
//将实体类转换为JSON数据
Student student = new Student(1,"李三",17);
String s = JSON.toJSONString(stdent);
//json 数据转化为json对象
JSONObject jsonObject = JSON.parseObject(s)
jsonObject .get("id");
jsonObject .get("username");
jsonObject .get("age")
//json 数据转化为实体类
Student student = JSON.parseObject(s, Student .class);
注意: JSONObject 底层默认使用的是hashmap 所以输出是按key的ASCII码排序来的和插入顺序无关 如果对顺序由需求的话可以使用linkedHashMap
即定义JSONObject可以这样:JSONObject jsonObj = new JSONObject(new LinkedHashMap());
或者 JSONObject jsonObj = new JSONObject(true);
查看源码就能够明白
private static final long serialVersionUID = 1L;
private static final int DEFAULT_INITIAL_CAPACITY = 16;
private final Map<String, Object> map;
public JSONObject(){
this(DEFAULT_INITIAL_CAPACITY, false);
}
public JSONObject(Map<String, Object> map){
this.map = map;
}
public JSONObject(boolean ordered){
this(DEFAULT_INITIAL_CAPACITY, ordered);
}
public JSONObject(int initialCapacity){
this(initialCapacity, false);
}
public JSONObject(int initialCapacity, boolean ordered){
if (ordered) {
map = new LinkedHashMap<String, Object>(initialCapacity);
} else {
map = new HashMap<String, Object>(initialCapacity);
}
}