Fastjson示例代码

package com.wzc.test.Test;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;

class User {
	private int id;

	private String name;

	private Date birthday;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		return "User [id=" + id + ", name=" + name + ", birthday=" + format.format(birthday) + "]";
	}
}

public class App {
	public static void main(String[] args) {
		// 序列化与反序列Bean
		// 因为Bean中的字段带有类型,不同的类型都能正确处理
		// 1. 准备数据
		User user = new User();
		user.setId(1);
		user.setName("User");
		user.setBirthday(new Date());
		// 2. 序列化
		String beanStr = JSON.toJSONString(user);
		System.out.println(beanStr);
		System.out.println();
		// 3. 反序列化
		User bean = JSON.parseObject(beanStr, User.class);
		System.out.println(bean);
		System.out.println();
		// 4. 格式化形式的反序列化
		String prettyStr = JSON.toJSONString(user, SerializerFeature.PrettyFormat);
		System.out.println(prettyStr);
		System.out.println();
		// 5. 使用参数保留类型信息
		String classStr = JSON.toJSONString(user, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat);
		System.out.println(classStr);
		System.out.println();

		// 序列化与反序列化Map
		// 1. 准备数据
		Map<String, Object> map = new HashMap<>();
		map.put("id", 1);
		map.put("name", "User");
		map.put("birthday", new Date());
		// 2. 序列化
		String mapStr = JSON.toJSONString(map);
		System.out.println(mapStr);
		System.out.println();
		// 3. 反序列化
		// 使用TypeReference提供类型信息
		// 由于Value为Object类型,可以看到序列化和反序列化丢失了类型信息
		Map<String, Object> m = JSON.parseObject(mapStr, new TypeReference<Map<String, Object>>() {
		});
		System.out.println(m);
		System.out.println();

		// 序列化与反序列化数组
		// 1. 准备数据
		User user2 = new User();
		user2.setId(2);
		user2.setName("User2");
		user2.setBirthday(new Date());
		User[] array = new User[] { user, user2 };
		// 2. 序列化
		String arrayStr = JSON.toJSONString(array);
		System.out.println(arrayStr);
		System.out.println();
		// 3. 反序列化
		List<User> users = JSON.parseArray(arrayStr, User.class);
		System.out.println(users);
		System.out.println();
		// 4. 使用JSONObject和JSONArray
		JSONArray jsonArray = JSON.parseArray(arrayStr);
		for (int i = 0; i < jsonArray.size(); i++) {
			JSONObject obj = jsonArray.getJSONObject(i);
			System.out.println(obj);
		}
	}
}

输出

{"birthday":1453037936843,"id":1,"name":"User"}

User [id=1, name=User, birthday=2016-01-17]

{
	"birthday":1453037936843,
	"id":1,
	"name":"User"
}

{
	"@type":"com.wzc.test.Test.User",
	"birthday":1453037936843,
	"id":1,
	"name":"User"
}

{"birthday":1453037937054,"name":"User","id":1}

{birthday=1453037937054, name=User, id=1}

[{"birthday":1453037936843,"id":1,"name":"User"},{"birthday":1453037937057,"id":2,"name":"User2"}]

[User [id=1, name=User, birthday=2016-01-17], User [id=2, name=User2, birthday=2016-01-17]]

{"birthday":1453037936843,"name":"User","id":1}
{"birthday":1453037937057,"name":"User2","id":2}


你可能感兴趣的:(fastjson,示例代码)