当前位置: 首页 > 知识库问答 >
问题:

JavaJson:指定每个转换排除哪些字段

郏兴贤
2023-03-14

如前所述,我知道我可以将Java对象转换为json(使用Jackson)

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(objectToBeConverted);

我知道我可以使用@JsonIgnore注释将字段排除在json字符串中,但是如果我想多次将同一个类转换为json,但每次都选择忽略不同的字段,该怎么办?

例如,如果我有一门课

class Foo {
    int a;
    int b;
    ...
}

我能做一些像

Foo foo = new Foo();
String json1 = ow.writeValueAsString(foo).excludeField('b');
String json2 = ow.writeValueAsString(foo).excludeField('a');

这样产生的字符串看起来就像

// json1
{
    a: 1234
}
// json2
{
    b: 5678
}

如果杰克逊做不到,也许格森可以?还是另一个图书馆?

任何帮助都将不胜感激!

共有1个答案

唐昊焜
2023-03-14

用户可以定义一个过滤器,根据不同的条件忽略属性。

首先为过滤器定义一个简单的类:

public class YourConditionalFilter {

    @Override
    public boolean equals(int a) {
        return a == 1234;
    }
}

然后在属性顶部添加此过滤器作为注释:

@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = YourConditionalFilter.class)
int a;
 类似资料:
  • 如前所述,我知道我可以将Java对象转换为JSON(使用Jackson) 我知道我可以使用注释排除JSON字符串中包含的字段,但是如果我想多次将相同的类转换为JSON,但每次都选择要忽略的不同字段,该怎么办? 例如,如果我有一堂课 我能做点像这样的事吗 这样产生的字符串看起来就像 如果杰克逊做不到,也许格森可以?或者另一个图书馆?

  • 问题内容: 我编入索引的Elasticsearch文档包含许多字段。我一直在使用match_all查询来获取结果。我想从match_all中排除一些字段,这可能吗? 问题答案: 在Elasticsearch中,您可以使用部分字段来过滤字段。 例:

  • 问题内容: 它们是否与XML相同,也许还要加上空格()? 我发现的HTML转义字符一些大名单,但我不认为他们 必须 进行转义。我想知道 需要 逃避什么。 问题答案: 如果你在文本内容预期的位置在文档中插入文本内容1,你通常只需要,你会在XML逃脱相同的字符。在元素内部,这仅包括实体转义与号和元素定界符小于和大于符号 : 在属性值内部,还必须转义使用的引号字符: 在某些情况下,跳过这些字符中的某些字

  • 我正在尝试使用Spring-data-rest和spring-data-mongodb来公开只读资源。 我遇到的问题是,我想对我的文档有不同的看法。假设我在一份文件中有一些私人信息,我不想公开曝光。 所以我试了好几种方法。我阅读了这篇文章https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spri

  • 我是XSLT的新手,命名空间有问题。这是我必须转换的XML: 我正在使用以下XSLT: 结果是: 我试图删除结果输入顺序中的名称空间,但它不适合我。有人能帮我学习XSLT吗?谢谢

  • Merge Request怎么指定合并哪些commit,比如3条commit我只想合并2条