定位嵌套属性的Jackson @JsonIgnoreProperties

时间:2018-07-21 02:02:57

标签: java json jackson

有没有一种方法可以使@JsonIgnoreProperties以嵌套属性为目标?

类似于以下代码:

import re
regex = r"```.*?```|`.*?`|(<img(?!.*?alt=(['\"]).*?\2)[^>]*)(>)"
test_str = ("```html\n"
    "<img src=\"fil.png\">\n"
    "```\n\n"
    "- [ ] Here is another image <img src=\"fil.png\"> and another `<img src=\"fil.png\">`\n\n"
    "  ```html\n"
    "  <a href=\"scratch/index.html\" id=\"scratch\" data-original-title=\"\" title=\"\" aria-describedby=\"popover162945\">\n"
    "    <div class=\"logo-wrapper\">\n"
    "    </div>\n"
    "    <div class=\"name\">\n"
    "      <span>Scratch</span>\n"
    "    </div>\n"
    "    <img src=\"fil.png\">\n"
    "  </a>\n"
    "  ```")

matches = re.finditer(regex, test_str, re.DOTALL)
for match in matches:
    if match.group(1):
        print ("Found at {start}-{end}: {group}".format(start = match.start(1), end = match.end(1), group = match.group(1)))

在此示例中,我希望在 ParentObject 的序列化中不包含 subAttributeC -但仍需要将同一 subAttributeC 在其他情况下可序列化。

如果无法使用注释,该如何实现?

2 个答案:

答案 0 :(得分:0)

一种可能的方法是将@JsonSerialize与自定义序列化程序一起使用。这在较低的抽象级别上运行,您基本上必须指定如何序列化每个单个属性。有一个使用平面对象的示例here,但是考虑到JsonGenerator具有类似writeObject之类的方法,我相信它也可以用于层次结构。

答案 1 :(得分:-1)

如果jackson配置为不序列化null属性:

objectMapper.setSerializationInclusion(Include.NON_NULL);

然后一个更简单的解决方法是在将不需要的属性返回之前将其设置为null。