fastjson 复杂json 序列化、反序列化

package com.jsonobj;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class A {

	private Integer id;
	private Long number;
	private Boolean checked;
	private String name;
	private Date create_time;
	private B b;
	private C c;
	private List b_list;
	private List c_list;

	public void addB(B b) {
		if (b_list == null) {
			b_list = new ArrayList();
		}
		b_list.add(b);
	}

	public void addC(C c) {
		if (this.c_list == null) {
			this.c_list = new ArrayList();
		}
		c_list.add(c);
	}

	public Integer getId() {
		return id;
	}

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

	public Long getNumber() {
		return number;
	}

	public void setNumber(Long number) {
		this.number = number;
	}

	public Boolean getChecked() {
		return checked;
	}

	public void setChecked(Boolean checked) {
		this.checked = checked;
	}

	public String getName() {
		return name;
	}

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

	public Date getCreate_time() {
		return create_time;
	}

	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}

	public B getB() {
		return b;
	}

	public void setB(B b) {
		this.b = b;
	}

	public C getC() {
		return c;
	}

	public void setC(C c) {
		this.c = c;
	}

	public List getB_list() {
		return b_list;
	}

	public void setB_list(List b_list) {
		this.b_list = b_list;
	}

	public List getC_list() {
		return c_list;
	}

	public void setC_list(List c_list) {
		this.c_list = c_list;
	}
}

package com.jsonobj;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class B {
	private Integer id;
	private Long number;
	private Boolean checked;
	private String name;
	private Date create_time;
	private List c_list;

	public Integer getId() {
		return id;
	}

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

	public Long getNumber() {
		return number;
	}

	public void setNumber(Long number) {
		this.number = number;
	}

	public Boolean getChecked() {
		return checked;
	}

	public void setChecked(Boolean checked) {
		this.checked = checked;
	}

	public String getName() {
		return name;
	}

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

	public Date getCreate_time() {
		return create_time;
	}

	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}

	public List getC_list() {
		return c_list;
	}

	public void setC_list(List c_list) {
		this.c_list = c_list;
	}

	public void addC(C c) {
		if (this.c_list == null) {
			this.c_list = new ArrayList();
		}
		c_list.add(c);
	}
}

package com.jsonobj;

import java.util.Date;
import java.util.List;
import java.util.Map;

public class C {
	private Integer id;
	private Long number;
	private Boolean checked;
	private String name;
	private Date create_time;
	private Map> m_list;

	public Integer getId() {
		return id;
	}

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

	public Long getNumber() {
		return number;
	}

	public void setNumber(Long number) {
		this.number = number;
	}

	public Boolean getChecked() {
		return checked;
	}

	public void setChecked(Boolean checked) {
		this.checked = checked;
	}

	public String getName() {
		return name;
	}

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

	public Date getCreate_time() {
		return create_time;
	}

	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}

	public Map> getM_list() {
		return m_list;
	}

	public void setM_list(Map> m_list) {
		this.m_list = m_list;
	}
}


/**   
 * @Title: JsonTest.java 
 * @Package com.jsonobj 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author Aaron·Li   
 * @date 2017年5月22日 下午2:45:24 
 * @version V1.0   
 */
package com.jsonobj;

import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * @author Aaron·Li
 * @date 2017年5月22日 下午2:45:24
 */
public class JsonTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		A a = new A();
		a.setId(1);
		a.setName("A");
		a.setNumber(2L);
		a.setChecked(false);
		a.setCreate_time(new Date());

		B b = new B();
		b.setId(2);
		b.setName("B");
		b.setNumber(3L);
		b.setChecked(false);
		b.setCreate_time(new Date());

		C c = new C();
		a.setB(b);
		a.setC(c);

		for (int i = 0; i < 1; i++) {
			C cc = new C();
			cc.setId(i + 2);
			cc.setName("C" + i);
			cc.setNumber(3L + i);
			cc.setChecked(false);
			cc.setCreate_time(new Date());
			Map> m=new LinkedHashMap<>();
			List cList=new ArrayList<>();
			C cccc = new C();
			cccc.setId(i + 22);
			cccc.setName("CC" + i);
			cccc.setNumber(3L + i);
			cccc.setChecked(false);
			cccc.setCreate_time(new Date());
			cList.add(cccc);
			m.put("m"+i, cList);
			cc.setM_list(m);
			b.addC(cc);
			B bb = new B();
			bb.setId(i + 1);
			bb.setName("B" + i);
			bb.setNumber(3L + i);
			bb.setChecked(false);
			bb.setCreate_time(new Date());
			a.addB(bb);
			a.addC(cc);
		}

		String jsonA = JSON.toJSONString(a, SerializerFeature.WRITE_MAP_NULL_FEATURES, SerializerFeature.DisableCircularReferenceDetect);
		System.err.println(jsonA);
		//jsonA = "{\"b\":{\"c_list\":[],\"checked\":false,\"test\":null,\"create_time\":1495438825978,\"id\":2,\"name\":\"B\",\"number\":3},\"b_list\":[{\"c_list\":null,\"checked\":false,\"create_time\":1495438825978,\"id\":1,\"name\":\"B0\",\"number\":3}],\"c\":{\"checked\":null,\"create_time\":null,\"id\":null,\"name\":null,\"number\":null},\"c_list\":[{\"checked\":false,\"create_time\":1495438825978,\"id\":2,\"name\":\"C0\",\"number\":3}],\"checked\":false,\"create_time\":1495438825977,\"id\":1,\"name\":\"A\",\"number\":2}";
		A a2 = new A();
		a2 = JSON.parseObject(jsonA, A.class);
		System.out.println(a2);
		if (a2.getB() != null && a2.getB().getC_list() != null) {
			for (int i = 0; i < a2.getB().getC_list().size(); i++) {
				C ccc = a2.getB().getC_list().get(i);
				System.out.println(ccc.getNumber());
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值