java json 长度限制_java – Spring MVC Json解析限制的最佳解决方法

我有一个使用

Spring,Hibernate的项目,并且有一个返回

JSON的控制器.当然,我的模型包含使用JPA注释定义hibernate关系的列表,因此,例如,我有Users,它们包含一组他们拥有的Challenge,同样Challenge包含拥有它的用户.

不幸的是,我的JSON中嵌入的集合似乎有很多问题.

例如,通过该设置(用户拥有挑战并且挑战拥有所有者),我可以很好地返回挑战.我可以回复用户就好了.但是当我尝试返回一系列挑战时,一切都会爆炸!我从Jmeter测试中收到以下错误:

错误500服务器错误

我相信这意味着Jackson json解析器在设置json时遇到了问题.我相信这一点,因为如果我使用@JsonIgnoreProperties({“challengeOwned”}),那么我可以很好地返回挑战列表,因为每个单独的挑战对象不再嵌入其中的列表.

这对我来说似乎很奇怪.杰克逊真的不能在JSON中映射简单的嵌入式列表吗?我也遇到了一个很大的问题,因为我有一个使用User作为其键的Map …而且似乎甚至不可能将JSON map的键定义为嵌入对象!

有没有人对我的问题有任何建议?我是否必须手动定义一些Json映射?有一个我不知道的简单解决方案吗?

编辑:

虽然j0ntech所说的确如此,但事实证明并非整个故事.似乎当Spring使用Jackson将我的一个hibernate实体序列化为它的JSON版本时,hibernate试图延迟加载该实体的一个属性,但由于该实体在该点处处于其事务之外(在“控制器中”) ),它引起了一个例外,它被吞没了.

实际上有两个问题.我想通过尝试手动使用Jackson来序列化我实际返回之前返回的对象来解决这个问题.这样我实际上得到了另一个问题的堆栈跟踪.

最佳答案 您可能有一个递归循环(根据DwB的评论):用户包含一个挑战列表,每个挑战包含一个用户,其中包含挑战列表等等.解析器(或整个服务器)不喜欢这样.您应该使用注释

JsonManagedReference和

JsonBackReference.

您可以阅读有关如何使用这些注释here和here的内容.我已经在我自己的一些项目中使用它们,如果正确实现它们的效果非常好.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值