fastjson之annotation.JSONField

@JSONField注释的第一个用处:序列化时定制序列化

fastjson是一个json库
一个JSON库的最基本功能就是序列化和反序列化
Fastjson支持Java bean的直接序列化。使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

用法1JSON.toJSONString
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本

定义实体类

import com.alibaba.fastjson.annotation.JSONField;

public class DestinationPoint{
	private String name;// 名称	
	private Float altitude;// 纬度
	
    /**点1:序列化时该字段序列化后key值为smx*/
	@JSONField(name = "smx")
	private Float longitude;// 经度
	
	/**点2:该字段不允许被序列化*/
	@JSONField(serialize = false)
	private Float latitude;// 海拔
    //添加getter,setter方法,必须有get方法才能被序列化 
}

import com.alibaba.fastjson.JSONObject;
public static void main(String[] args) {

		// 第一步:新建一个Destination对象
		DestinationPoint destination = new DestinationPoint();
		destination.setName("sss");
		destination.setAltitude((float) 11);
		destination.setLatitude((float) 11);
		destination.setLongitude((float) 99);

		/** 第二步:默认序列化和反序列化 */
		// 序列化:对象的所有非空字段转为json字符串
		String desJson = JSONObject.toJSONString(destination);
		System.out.println(desJson);
	}

测试结果
字段latitude没能序列化
字段longitude序列化后,key值变成了“smx”

这里写图片描述

@JSONField注释的第二个用处:类关联时,主类和从类中必须有一个添加该注释,要不然会循环引用,造成栈溢出

定义类DestinationPoint

public class DestinationPoint  {

	@Column(name = "name", length = 50)
	private String name;// 名称

	@JSONField(serialize = false)
	@OneToMany(cascade = { CascadeType.REFRESH, CascadeType.MERGE }, mappedBy = "destination", fetch = FetchType.LAZY)
	private Set<CollectLine> collectlines = new HashSet<CollectLine>();// 目的地对线路,是一对多
																		

定义类CollectLine

public class CollectLine extends BaseEntity<Long> {

	@Column(name = "name", length = 100)
	private String name;// 名称

	@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER)
	@JoinColumn(name = "destination_point_id")
	private DestinationPoint destination;// 目的地点

如果DestinationPoint类中定义字段collectlines 没有用注解,类CollectLine类中定义字段destination也没有用注解,会跑出异常如下:
这里写图片描述

posted on 2017-03-13 15:22  dreamstar  阅读(265)  评论(0编辑  收藏  举报