FastJson是阿里巴巴开源的一个Json处理工具包,包括“序列化”和“反序列化”两部分。
测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson,功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
FastJson 说明:https://github.com/Alibaba/fastjson/wiki/%E9%A6%96%E9%A1%B5
注意:FastJson有分Java版本和Android版本的,不要弄错了,很多博客上都没提及这一点
android FastJson jar 下载地址:https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.11/fastjson-1.2.11.jar
将该jar包拷贝到项目的libs目录下,android会自动引用
FastJson中的常用方法:
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 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转换为JSONObject或者JSONArray。
1、Person.java
class Person {
//姓名
private String name = null;
//年龄
private int age = 0;
//是否为男性
private boolean isMale = true;
//孩子的姓名
private List childName = new ArrayList();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMale() {
return isMale;
}
public void setMale(boolean isMale) {
this.isMale = isMale;
}
public List getChildName() {
return childName;
}
public void setChildName(List childName) {
this.childName = childName;
}
public void init() {
name = "Bob";
age = 25;
isMale = true;
childName.add("Tina");
childName.add("Linda");
childName.add("Tom");
}
@Override
public String toString() {
String str = "姓名: " + name + ", 年龄: " + age + ", 性别: " + (isMale?"男性":"女性") + "\n";
if(childName != null && childName.size() != 0) {
str = str + "孩子个数: " + childName.size() + "\n";
for(int i=0;i
2、activity_fastjson.xml 就一个TextView用来显示结果
3、FastjsonActivity.java
public class FastjsonActivity extends Activity {
public TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fastjson);
textView = (TextView) findViewById(R.id.textview);
Person person = new Person();
person.init();
//(1)
JSONObject personObject = (JSONObject) JSON.toJSON(person);
addText(personObject.toString());
//(2)
String personStr = JSON.toJSONString(person);
addText(personStr);
//(3)
person = JSON.parseObject(personStr, Person.class);
addText(person.toString());
//(4)
String jsonArrStr = "[\"a\", \"b\", \"c\", \"d\"]";
JSONArray jsonArr = JSON.parseArray(jsonArrStr);
addText(jsonArr.toString());
//(5)
List strlist = JSON.parseArray(jsonArrStr, String.class);
addText(strlist.toString());
}
public void addText(String str) {
textView.setText(textView.getText().toString() + str + "\n");
}
}
输出结果:
{“childName”:["Tina","Linda","Tom"],"name":"bob","age":25,"isMale":true}
{"age":25,"childName":["Tina","Linda","Tom"],"isMale":true,"name":"Bob"}
姓名: Bob, 年龄: 25, 性别: 男性
孩子个数: 3
0. Tina
1. Linda
2. Tom
["a","b","c","d"]
[a,b,c,d]