本文共 2808 字,大约阅读时间需要 9 分钟。
fastjson是一个性能很好的 Java语言实现的 JSON解析器和生成器,来自阿里巴巴的工程师开发。(只需要将该jar文件引入到项目中,即可通过JSON类作为使用fastJson的各个方法的使用入口)
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。(JSONObject即json对象)
public static final Object parse(String text); // 把JSON文本parse为json对象或者JSONArray public static final JSONObject parseObject(String text);//把JSON文本parse成json对象public static final注意:T parseObject(String text, Class clazz); //把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final List parseArray(String text, Class 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转换为json对象或者JSONArray。
SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>(JSON对象就相当于Map集合)
JSON反序列化没有真正数组,本质类型都是List<Object>
fastjson其实还有很多很高级的特性,比如支持注解、支持全类型序列化,这些都是很好的特性,功能十分强大,大家可以自行研究使用一下,至于fastjson与Jackson到底谁好,大家可以自行比较研究一番。
下面是我练习时的部分小例子:
import com.alibaba.fastjson.JSON;/** * 练习使用阿里巴巴的fastJson * @author Administrator */public class FJDemo { public static void main(String[] args){ String name="於之"; String sex="男"; String age="20"; String clazz="网络2班";//班级 Student stu=new Student(); stu.setName(name); stu.setSex(sex); stu.setAge(age); stu.setClazz(clazz); // //javaBeanToJson(stu); jsonToJavaBean("{'age':'20','clazz':'网络2班','name':'於之','sex':'男'}");//key值必须要和javabean对象的成员变量一一对应 //将json数据格式的字符串转为json对象,js中是通过eval()函数完成的。 JSON json=JSON.parseObject("{'age':'20','clazz':'网络2班','name':'於之','sex':'男'}"); } //JavaBean对象序列化为json格式的数据 public static void javaBeanToJson(Object obj){ String str=""; str=JSON.toJSONString(obj);//参数为javabean对象 返回json格式的数据 System.out.println(str); } //json格式数据反序列化为javabean对象 public static void jsonToJavaBean(String json){ Student stu=JSON.parseObject(json, Student.class); System.out.println("转换之后javabean的成员变量的值:"); System.out.println(stu.getAge()); System.out.println(stu.getClazz()); System.out.println(stu.getName()); System.out.println(stu.getSex()); }}//javabean对象class Student{ private String name; private String sex; private String age; private String clazz;//班级 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; } }
转载地址:http://uscii.baihongyu.com/