【问题标题】:How to map single JSON property to multiple objects using Jackson?如何使用 Jackson 将单个 JSON 属性映射到多个对象?
【发布时间】:2019-04-18 13:34:46
【问题描述】:

JSON

"user_number": 897798

Entity.java

@JsonProperty("user_number")
private String entityNumber;

@JsonProperty("user_number")
private Integer userNumber;

如何将单个 json 属性 userNumber 映射到上述两个对象中? 即 userNumber 和 entityNumber 应该具有相同的值

【问题讨论】:

    标签: java json spring oop jackson


    【解决方案1】:

    您可以从userNumber setter 调用entityNumber 的setter。

    public static class Entity {
    
        private Integer entityNumber;
    
        @JsonProperty("user_number")
        private Integer userNumber;
    
        public Integer getEntityNumber() {
            return entityNumber;
        }
        public void setEntityNumber(Integer entityNumber) {
            this.entityNumber = entityNumber;
        }
        public Integer getUserNumber() {
            return userNumber;
        }
        public void setUserNumber(Integer userNumber) {
            this.userNumber = userNumber;
            setEntityNumber(userNumber);
        }
    }
    

    现在无论何时调用setUserNumber(),它也会调用setEntityNumber()

    【讨论】:

      【解决方案2】:

      您必须使用@JsonProperty("userNumber") 注释两者。这样两个字段都映射到 json 中的同一个字段。

      【讨论】:

      • 不,它不是那样工作的。后一个设置为null,只有第一个字段设置了值
      • 您是否尝试过在userNumber 上不使用此注释?
      • 我已经更新了这个问题。你能再检查一下吗
      • 它不起作用,它会为属性user_number抛出冲突的getter / setter
      • @PratapiHemantPatel 当然,因为 OP 改变了问题......我还没有想出改进
      猜你喜欢
      • 2019-02-06
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多