FastJson常用操作
获取到post请求,利用JSON API获取到相应的参数,解析成程序需要的对象。
String msgPara ="{\"empNames\":[{\"empName\":\"lihz\"},{\"empName\":\"changhf\"}],\"message\":\"aaa\"}";
JSONObject jsonObject = (JSONObject) JSONObject.parse(msgPara);
JSONArray groups = jsonObject.getJSONArray("empNames");//方法一
JSONArray groups = JSONPath.eval(jsonObject, "$.empNames");//方法二,eval方法传入的是json对象,不是字符串
String msgPara2 ="[{\"empName\":\"lihz\"},{\"empName\":\"changhf\"}]";
JSONArray jsonArray = JSON.parseArray(msgPara2);
JSON/JSONObject/JSONArray
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
1、public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
2、public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
3、public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
// 将JavaBean序列化为带格式的JSON文本
public static final String toJSONString(Object object, boolean prettyFormat);
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
UserInfo userInfo = JSON.parseObject(data, UserInfo.class);
List<UserInfo> dbconfigList = JSON.parseArray(configInfo, UserInfo.class);
JsonObject和JsonArray都继承自JSON
JSONObject getJSONObject(String key);
JSONPath
// 常用api介绍
public class JSONPath {
// 求值,静态方法
public static Object eval(Object rootObject, String path);
// 计算Size,Map非空元素个数,对象非空元素个数,Collection的Size,数组的长度。其他无法求值返回-1
public static int size(Object rootObject, String path);
// 是否包含,path中是否存在对象
public static boolean contains(Object rootObject, String path) { }
// 是否包含,path中是否存在指定值,如果是集合或者数组,在集合中查找value是否存在
public static boolean containsValue(Object rootObject, String path, Object value) { }
// 从json串中取值
public static Object read(String json, String path){}
}
{"store":{"bicycle":{"color":"red","price":19.95},"book":[{"author":"Nigel Rees","price":8.95,"category":"reference","title":"Sayings of the Century"},{"author":"Evelyn Waugh","price":12.99,"isbn":"0-553-21311-3","category":"fiction","title":"Sword of Honour"}]}}
JSONPath.contains(entity, "$.value");//entity是否包含value属性
JSONPath.eval(entity, "$.value")//从entity取value值
JSONPath.containsValue(entity, "$.id", 123)//entity的id是否为123
JSONPath.size(entity, "$")//有几个属性
List<String> names = (List<String>)JSONPath.eval(entities, "$.name"); // 返回enties的所有名称
//eval使用json对象匹配,read直接使用json字符串匹配
JSONPath.read(String json, String path)//使用JSONPrase 解析JSON字符串或者Object对象
String title = (String) JSONPath.read(jsonStr, "$.store.book[0].title");
Jackson记录
JackSon功能强大,序列化和反序列化性能都非常优秀,使用ObjectMapper类将POJO对象序列化为json字符串,也能将json字符串反序列化为POJO对象。
最常用的方式是Databind(对象绑定)
User user = mapper.readValue(json,User.class);//反序列化
String str = mapper.writeValueAsString(user);//序列化