Android使用FastJson

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<String> childName = new ArrayList<String>();

	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<String> getChildName() {
		return childName;
	}

	public void setChildName(List<String> 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<childName.size(); i++) {
				str = str + "\t" + i + ". " + childName.get(i) + "\n";
			}
		}
		return str;
	}
}
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<String> 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]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值