一 FastJson
依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
常用API
// 把JSON文本parse为JSONObject或者JSONArray
public static final Object parse(String text);
// 把JSON文本parse成JSONObject
public static final JSONObject parseObject(String text);
// 把JSON文本parse为JavaBean
public static final <T> T parseObject(String text, Class<T> clazz);
// 把JSON文本parse成JSONArray
public static final JSONArray parseArray(String text);
//把JSON文本parse成JavaBean集合
public static final <T> List<T> parseArray(String text, Class<T> clazz);
// 将JavaBean序列化为JSON文本
public static final String toJSONString(Object javaObject);
// 将JavaBean序列化为带格式的JSON文本
public static final String toJSONString(Object object, boolean prettyFormat);
//将JavaBean转换为JSONObject或者JSONArray。
public static final Object toJSON(Object javaObject);
eg:
package com.hangzhou.json.fastjson;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.hangzhou.json.pojo.User;
public class JsonToll {
public static void main(String[] args) {
User user = new User(1, "李格宇", 24, "篮球");
System.out.println("111javaBean:" + user);
// javaBena转jsonObject
Object json = JSON.toJSON(user);
System.out.println("222jsonObject:" + json);
// javaBean转String
String jsonString = JSON.toJSONString(user);
System.out.println("333jsonString:" + jsonString);
// String转javaBena
User user1 = JSON.parseObject(jsonString, User.class);
System.out.println("444user1:" + user1);
// String转StringArray
String jsonStringArray = "[" + json + "," + json + "]";
System.out.println("555jsonStringArray:" + jsonStringArray);
// String转JSONArray
JSONArray parseArray = JSON.parseArray(jsonStringArray);
System.out.println("666JSONArray:" + parseArray);
// StringArray转List<javaBena>
List<User> users = JSON.parseArray(jsonStringArray, User.class);
System.out.println("777users:"+users);
}
}
Console:
111javaBean:User [userId=1, name=李格宇, age=24, hobby=篮球]
222jsonObject:{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"}
333jsonString:{"age":24,"hobby":"篮球","name":"李格宇","userId":1}
444user1:User [userId=1, name=李格宇, age=24, hobby=篮球]
555jsonStringArray:[{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"},{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"}]
666JSONArray:[{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"},{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"}]
777users:[User [userId=1, name=李格宇, age=24, hobby=篮球], User [userId=1, name=李格宇, age=24, hobby=篮球]]
二 Gson 或 JackJson
依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
eg:
package com.hangzhou.json.gson;
import com.google.gson.Gson;
import com.hangzhou.json.pojo.User;
public class JackJson{
public static void main(String[] args) {
User user = new User(2, "李格宇", 100, "篮球");
Gson gson = new Gson();
String json = gson.toJson(user);
User fromJson = gson.fromJson(json, User.class);
}
}
手写垃圾json化工具:还差一个对值根据类型加双引号。
package com.hangzhou.json;
import java.lang.reflect.Field;
import java.util.Arrays;
public class JsonUtil{
public static String toJSON(Object obj) throws IllegalArgumentException, IllegalAccessException {
Field[] declaredFields = obj.getClass().getDeclaredFields();
StringBuffer valueString = new StringBuffer();
/*
* System.out.println(Arrays.toString(declaredFields)); //[private long
* com.hangzhou.json.pojo.User.userId, private java.lang.String
* com.hangzhou.json.pojo.User.name, private java.lang.Integer
* com.hangzhou.json.pojo.User.age, private java.lang.String
* com.hangzhou.json.pojo.User.hobby]
*
* declaredFields[0].setAccessible(true);//打开私有化权限
* System.out.println(declaredFields[0].getName());//userId
* System.out.println(declaredFields[0].get(obj));//2
* System.out.println(declaredFields[0].getType());//long
* System.out.println(declaredFields[0].getGenericType());//long
*/
valueString.append("{");
for (Field field : declaredFields) {
field.setAccessible(true);
valueString.append("'"+field.getName()+"':");
valueString.append(field.get(obj)+",");
}
valueString.deleteCharAt(valueString.length()-1);
valueString.append("}");
return valueString.toString();
}
}