【问题标题】:Jackson: How to only ignore a Json property when creating a response?Jackson:如何在创建响应时只忽略 Json 属性?
【发布时间】:2022-11-21 02:08:13
【问题描述】:

我的 Spring 应用程序正在从 S3 获取 String,我需要将其转换为 JSON,然后再转换为 Person 对象。这一切都按预期工作。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

        ObjectMapper mapper = new ObjectMapper();
        JsonNode actualObj = mapper.readTree(s );
        Person person = mapper.treeToValue(actualObj, Person.class);

        if(person.getBalance()>0{
           person.setInCredit(true);
        }
      
       // todo - how to not return balance?

我的对象如下:

import com.fasterxml.jackson.annotation.JsonProperty;
    
    public class Person{
    
      @JsonProperty("id")
      private Integer id;
    
      @JsonIgnore
      @JsonProperty("balance")
      private Integer balance;
    
      @JsonProperty("inCredit")
      private Boolean inCredit;
    
      // other fields and setters etc
    
    }

如上所示,我最初需要读取余额以确定 inCredit 字段,但我想从 json 响应中排除余额。

如何确保字段余额从我的查询中读取正常,但不会在我的端点响应中再次返回?

注意 - 我尝试添加 JsonIgnore 但这没有用。

【问题讨论】:

  • 你也可以添加进口商品吗?
  • 现在添加进口

标签: java json spring-boot jackson setter


【解决方案1】:

您可以使用如下代码:

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY, value = "balance")
private Integer balance;

或者您可以仅在 getter 方法上添加 @JsonIgnore。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2014-09-18
    • 2017-07-07
    • 2019-02-22
    • 2021-06-11
    • 1970-01-01
    • 2015-01-12
    相关资源
    最近更新 更多