Fastjson简单使用方法
package Demo;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Vector;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.alibaba.fastjson.serializer.SerializerFeature;import entity.Userinfo;/** * fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。 主要特点: * 1.快速FAST(比其它任何基于Java的解析器和生成器更快,包括jackson) 强大(支持普通JDK类包括任意Java Bean * 2.Class、Collection、Map、Date或enum) 零依赖(没有依赖其它任何类库除了JDK) * */public class TestFastJson { public static void main(String[] args) { String json = "{\"name\":\"chenggang\",\"age\":24}"; String arrayAyy = "[[\'马云',50],null,[\'马化腾',30]]";// Entity2json("zhangsan", 24);// list2Json(); Complexdata();// Deserialization(json);// DateFormate(new Date());// Json2Eetity(json);// String2JSONArray(arrayAyy); } // 实体转为Json public static void Entity2json(String name, int age) { Userinfo info = new Userinfo(name, age); String str_json = JSON.toJSONString(info); // System.out.println("实体转化为Json" + str_json); } // list转Json public static void list2Json() { List<Userinfo> list = new ArrayList<Userinfo>(); Userinfo userinfo1 = new Userinfo("lisi", 15); Userinfo userinfo2 = new Userinfo("wangwu", 16); list.add(userinfo1); list.add(userinfo2); String json = JSON.toJSONString(list, true); System.out.println("List集合转json格式字符串 :" + json); } // 字符数组转化为JSon private static void String2JSONArray(String arrayAyy) { JSONArray array = JSONArray.parseArray(arrayAyy); System.out.println("数组:" + array); System.out.println("数组长度: " + array.size()); Collection nuCon = new Vector(); nuCon.add(null); array.removeAll(nuCon); System.out.println("数组:" + array); System.out.println("数组长度: " + array.size()); } // 复杂数据类型 public static void Complexdata() { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("username", "zhangsan"); map.put("age", 24); map.put("sex", "男"); // map集合 HashMap<String, Object> temp = new HashMap<String, Object>(); temp.put("name", "xiaohong"); temp.put("age", "23"); map.put("girlInfo", temp); // list集合 List<String> list = new ArrayList<String>(); list.add("爬山"); list.add("骑车"); list.add("旅游"); map.put("hobby", list); String jsonString = JSON.toJSONString(map); System.out.println("复杂数据类型:" + jsonString); } public static void Deserialization(String json) { Userinfo userInfo = JSON.parseObject(json, Userinfo.class); System.out.println("姓名是:" + userInfo.getName() + ", 年龄是:" + userInfo.getAge()); } // 格式话日期 public static void DateFormate(Date date) { System.out.println("输出毫秒值:" + JSON.toJSONString(date)); System.out.println("默认格式为:" + JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat)); System.out.println("自定义日期:" + JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat)); } // Json转为实体 private static void Json2Eetity(String json) { Userinfo userInfo = JSON.parseObject(json, Userinfo.class); System.out.println("输出对象的地址:" + userInfo.toString()); System.out.println("输出对象的名字:" + userInfo.getName()); }}一、简单数据的序列化
pubic class UserInfo implements Serializable{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}
public class TestOne{
public static void main(String[] args){
UserInfo info=new UserInfo();
info.setName("zhangsan");
info.setAge(24);
//将对象转换为JSON字符串
String strJson=JSON.toJSONString(info);
System.out.println("JSON="+strJson);
}
}
说明:
- 关键部分就是上述部分的JSON.toJSONString();
- JSON序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串,[eg:String jsonString = JSON.toJSONString(map, SerializerFeature.UseSingleQuotes);] fastjson序列化时可以选择的SerializerFeature有十几个属性,你可以按照自己的需要去选择使用。
二、反序列化
public void test3(){
String json="{\"name\":\"chenggang\",\"age\":24}";
//反序列化
UserInfo userInfo=JSON.parseObject(json,UserInfo.class);
System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());
}
/**泛型的反序列化*/
public static void test4(){
String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}";
Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){});
System.out.println(map.get("user"));
}
三、日期格式化
public void test5(){
Date date=new Date();
//输出毫秒值
System.out.println(JSON.toJSONString(date));
//默认格式为yyyy-MM-dd HH:mm:ss
System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));
//根据自定义格式输出日期
System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));
}
说明:
阿里巴巴提供了很多SerializerFeature.XXX 这些都很符合中国人的习惯。比起Jackson各有优劣!
四、基本常用API
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。 // public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray // public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject // public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean // public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray // public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 // public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 // public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 // public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)
JackSon下载:http://repo1.maven.org/maven2/com/alibaba/fastjson/ 与 https://yunpan.cn/cu2iEKCZjXfak 访问密码 8291

浙公网安备 33010602011771号