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也没有用注解,会跑出异常如下:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值