json传递死循环问题
2015-11-11 21:39
766 查看
可能有时我们需要将某个对象要传给前端,但是因为可能会有互相引用的情况出现,这是json使用所必须面对的。有三个方案,
方案1:写个bean,将相互引用的给去掉。
方案2:用注解将不用的注掉。
方案3:用filter来实现。将不必要的给filter掉。代码实现:
filter名称一定要和filter(“myFilter”, “name”)名称一致。
方案1:写个bean,将相互引用的给去掉。
方案2:用注解将不用的注掉。
方案3:用filter来实现。将不必要的给filter掉。代码实现:
private ObjectMapper objectMapper; /** * 过滤属性 * * <pre> * 使用方法: * 先给ObjectMapper添加一个filter,然后还要在需要过滤的类上加@JsonFilter("filterName")注解。 * 比如说要过滤User上的name属性,先 * filter("myFilter", "name").readAsString(user),并在User类上加@JsonFilter("myFilter")。 * 有点不爽的是如果用另外一个没有添加该filter的ObjectMapper解析的话会报错。 * 如果这个User类已经添加了@JsonFilter("myFilter")注解,但在另外一个地方又要解析它并不想过滤name属性, * 那只能是Jacksons.me().filter("myFilter", ""),然后在读出来。 * </pre> * * @param filterName * 过滤器的名称 * @param properties * 要过滤的字段名称 * @return */ public Jacksons filter(String filterName, String... properties) { FilterProvider filterProvider = new SimpleFilterProvider().addFilter(filterName, SimpleBeanPropertyFilter.serializeAllExcept(properties)); objectMapper.setFilters(filterProvider); return this; } /** * json转换为java对象 * * @param json * 字符串 * @param clazz * 对象的class * @return 返回对象 */ public <T> T fromJsonToObject(String json, Class<T> clazz) { try { return objectMapper.readValue(json, clazz); } catch (Exception e) { log.error(e.getLocalizedMessage(), e); throw new RuntimeException(e.getLocalizedMessage()); } }
filter名称一定要和filter(“myFilter”, “name”)名称一致。
相关文章推荐
- js高级应用
- [读书笔记]高性能JS-编程实践
- js中innerText,innerHTML的用法
- ie6下js更新元素display:block后,仍然不显示的hack办法
- JavaScript事件列表
- 你不知道的JavaScript--Item32 DOM基础详解2
- JSON.parse()和JSON.stringify()
- Perl中调用路径接口(返回值为json)发送邮件
- JavaScript基础——引用类型
- Javascript实现图片的预加载的完整实现
- js实现打开网页设备判断
- jstack分析cpu占用100%
- js实现左右点击图片层叠滚动特效
- js获取网页或窗口的高宽
- js 如何获取自定义属性的值
- 面向对象的 JavaScript
- Javascript模块化编程(三):require.js的用法
- [LeetCode][JavaScript]Range Sum Query - Immutable
- JavaScript-获取浏览器信息
- (转)理解Javascript_01_理解内存分配