json套json

有时,您必须使用JavaScript从服务器中获取一些数据, JSON是完成此任务的不错选择。

让我们玩一下JPA揭秘(第1集)-@OneToMany和@ManyToOne映射中的Employer – Employee – Benefit示例。 我们将在基于Spring Framework的Web应用程序中使用它。

我们的第一个控制器将返回员工列表作为响应主体,在本例中,将自动使用MappingJacksonHttpMessageConverter将handleGet方法返回的值转换为发送给客户端的响应。

@Controller
@RequestMapping('/employee-list.json')
public class EmployeeListController {@Autowiredprivate EmployerDAO employerDAO;@RequestMapping(method = RequestMethod.GET)@ResponseBodypublic List<Employee> handleGet(@RequestParam('employerId') Long employerId) {return employerDAO.getEmployees(employerId);}
}

当我们第一次尝试获取数据时,我们遇到了一个美丽的异常: JsonMappingException:无限递归(StackOverflowError) –由雇主–雇员–福利之间的双向引用引起。

寻找可能的解决方案,我发现了一条注释, 该声明使用声明式方法处理双向引用 ,并且在阅读它之后,已通过以下方式更正了域实体:

@Entity
@Table(name = 'EMPLOYERS')
public class Employer implements Serializable {
...@JsonManagedReference('employer-employee')@OneToMany(mappedBy = 'employer', cascade = CascadeType.PERSIST)public ListgetEmployees() {return employees;}
...
}@Entity
@Table(name = 'EMPLOYEES')
public class Employee implements Serializable {
...@JsonManagedReference('employee-benefit')@OneToMany(mappedBy = 'employee', cascade = CascadeType.PERSIST)public ListgetBenefits() {return benefits;}@JsonBackReference('employer-employee')@ManyToOne(optional = false)@JoinColumn(name = 'EMPLOYER_ID')public Employer getEmployer() {return employer;}
...
}@Entity
@Table(name = 'BENEFITS')
public class Benefit implements Serializable {
...@JsonBackReference('employee-benefit')@ManyToOne(optional = false)@JoinColumn(name = 'EMPLOYEE_ID')public Employee getEmployee() {return employee;}
...
}

完成上述更改后,我终于可以享受我的代码返回的JSON响应:

[{'id':1, 'benefits':[{'name':'Healthy Employees', 'id':1, 'type':'HEALTH_COVERAGE', 'startDate':1104534000000, 'endDate':null}, {'name':'Gold Autumn','id':2,'type':'RETIREMENT_PLAN','startDate':1104534000000,'endDate':null},{'name':'Always Secured','id':3,'type':'GROUP_TERM_LIFE','startDate':1104534000000,'endDate':null}],'firstName':'John'},{'id':2,'benefits':[],'firstName':'Mary'},{'id':3,'benefits':[],'firstName':'Eugene'}]

和往常一样,一些甜点的链接:

  • JSON – JavaScript对象表示法
  • 杰克逊–高性能JSON处理器

参考: JSON – Jackson是我们JCG合作伙伴 Micha的救助者吗? 术士思想博客上的Ja?tak。

翻译自: https://www.javacodegeeks.com/2012/09/json-jackson-to-rescue.html

json套json

json套json_JSON –拯救杰克逊相关推荐

  1. JSON –拯救杰克逊

    有时您必须使用JavaScript从服务器中获取一些数据, JSON是完成此任务的不错选择. 让我们玩一下JPA揭秘(第1集)-@OneToMany和@ManyToOne映射中的"雇主-雇员 ...

  2. php返回json套数组_教你PHP怎么不用框架写优雅的中小网站

    php这种语言本来就是函数化为主的语言,讲究的是简单实用.但是现在市面上现在流行的框架大多臃肿,复杂,学习难度大,同时有大量用不着的东西,做个小网站或者小项目还是太笨重.所以 这里我提供一点用纯php ...

  3. 苏宁V购 不为拯救 只求改变

    前日,苏宁推出的V购服务意外的引发了不小的争论,没想到这本应该是很普通的一件事情,却激起了自媒体人关于V购能否救苏宁实体店的论战.其实,将V购套上拯救苏宁实体店的帽子有些太大了,V购的意义不是救,而是 ...

  4. JSON文件学习(jsonc、json-c)(不要学这个,去学cJSON)

    json-c从会使用到自实现 json-c和jsoncpp的api使用教程(附视频链接) 文章目录 json-c和jsoncpp的api使用教程(附视频链接) 1.json的介绍 2.json格式的实 ...

  5. json.parser性能_Jackson JSON Java Parser API示例教程

    json.parser性能 Jackson JSON Java Parser is very popular and used in Spring framework too. Java JSON P ...

  6. dnf登陆界面服务器显示数字,DNF让我成为了程序猿, 登录界面卡住了怎么办? 几个方法拯救你的卢克门票。...

    原标题:DNF让我成为了程序猿, 登录界面卡住了怎么办? 几个方法拯救你的卢克门票. 昨天游戏更新之后,有很多小伙伴跟小编反应DNF登录游戏的时候总是卡在登录界面怎么办? DNF哪次更新总要伴随点BU ...

  7. IT公司老板落水,各部门员工会怎么救?老板:我还是乖乖学游泳吧~

    来自:网络 公司高层 公司副总A:咱们开个会研究一下这个事情怎么处理. 公司副总B:如果老板没有救成功,下任是谁呢?会不会影响公司的上市? 公司副总C:我认为咱们开会应该讨论两个方案,一个是救人方案, ...

  8. 哪吒票房逼近40亿,用python爬取哪吒短评分析

    目录 前言 分析 具体步骤 登录 爬取与存储 可视化分析 结语 前言 暑期档电影惨淡,但随着哪吒爆红开拓了新局面.这也是国产动画的首次爆红.在哪吒刚出,笔者以为最多10亿就算不错的了.没想过仅过了几天 ...

  9. IT公司老板落水,各部门员工怎么救

    公司高层 公司副总A:咱们开个会研究一下这个事情怎么处理. 公司副总B:如果老板没有救成功,下任是谁呢?会不会影响公司的上市? 公司副总C:我认为咱们开会应该讨论两个方案,一个是救人方案,一个是危机公 ...

最新文章

  1. 利用BP神经网络教计算机进行非线函数拟合(代码部分单层)
  2. 阿里巴巴5月5日综合算法题详解
  3. VB中对AutoCAD图形对象进行缩放操作
  4. python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法
  5. google nexus5x 刷机抓包逆向环境配置(一)
  6. stm32之TIM-高级定时器应用实例一(详细)
  7. 2656: [Zjoi2012]数列(sequence)(递归+高精度)
  8. 游戏中常用的寻路算法的分享(3):A*算法的实现
  9. C语言实现魔方阵代码及解析
  10. Mac os区别_SN及Mac地址烧录
  11. IP地址的网络位与主机位
  12. java路径Java开发中获得非Web项目的当前项目路径
  13. java jdk 8 中文文档
  14. hive查询数据库总条数
  15. 脚本之家去广告JS插件
  16. 双河市谷歌高清卫星地图下载
  17. Airsim+UnrealEngine4 搭建无人车/无人机自动驾驶仿真环境
  18. Java代码给csv文件加水印_如何给文件加上水印?
  19. 判断单链表成环与否?
  20. 针织厂计算机社会实践报告,大学生寒假针织厂打工实践报告

热门文章

  1. 漫画:什么是机器学习
  2. 阿里巴巴对Java编程【Mysql】的规约
  3. 《金色梦乡》金句摘抄(九)
  4. 使用java解析XML文件的步骤
  5. 有一种陪伴不在身边,却在心间
  6. RabbitMQ(mall学习)
  7. 用赫夫曼树进行文件解压
  8. jenkins安装与配置windows_Windows下Scoop安装、配置与使用
  9. Dom4j完整教程详解
  10. ISO语言代码和国家代码+Locale常量+ISO货币符号