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> 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转换为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;
}
}