Java 空列表的JSON编组
我们有一个Java对象列表,通过Jersey创建的JSON进行编组 该列表称为“行”。当我们有数据时:Java 空列表的JSON编组,java,json,list,jaxb,jersey,Java,Json,List,Jaxb,Jersey,我们有一个Java对象列表,通过Jersey创建的JSON进行编组 该列表称为“行”。当我们有数据时: {"records":"1","page":"1","total":"1","rows":[{"id":"692334","cell":["ECS","D","201009","","0","ABCD","11","11","","201009"]}]} 当我们没有数据时: {"page":0,"records":0,"total":0} 即使列表的大小为0,我们如何使Jersey包含行字
{"records":"1","page":"1","total":"1","rows":[{"id":"692334","cell":["ECS","D","201009","","0","ABCD","11","11","","201009"]}]}
当我们没有数据时:
{"page":0,"records":0,"total":0}
即使列表的大小为0,我们如何使Jersey包含行
字段?我们想要的是:
{"page":0,"records":0,"total":0,"rows":[]}
注意,我们已经在使用JAXB ContextResolver,以确保JSON对于单行是正确的。不确定是否可以配置此解析器来解决我们的问题。使用Jackson JAX-RS提供程序,而不是不进行XML到JSON转换的替代方案(badgerfish/Destinson)。此转换很可能导致缺少数组。有多种方法可以配置此功能(jersey邮件列表应该有一些),最新版本可以通过jersey API直接公开此功能。这可能有助于您: 似乎有些阵列问题可以通过以下方式解决:
JSONConfiguration.mapped().arrays("yourArrayName").build()
至少它解决了这个问题,当列表只包含1项时,它也被格式化为JSON数组。我设法解决了Jersey JSON库中的JSON数组“bug”。秘密成分是前面提到的JSONConfiguration和ContextResolver magic。请参阅我下面的文章,它有一个完整的代码示例,定制的ContextResolver和rest应用程序类在第一眼看上去可能有些模糊逻辑
- 零元素或单元素Java列表的json数组
- 不带引号字符的基本整数或布尔字段