Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jackson将单个java字段映射到两个JSON字段_Java_Json_Jackson - Fatal编程技术网

使用jackson将单个java字段映射到两个JSON字段

使用jackson将单个java字段映射到两个JSON字段,java,json,jackson,Java,Json,Jackson,POJO中有一个isCase字段,它被映射到case,同时也是case(这不是预期的)。 删除@JsonProperty注释可以去掉json中的is_case字段,但是is_case是它应该的样子。 将@JsonIgnore放在isCase上并不能消除json响应中的大小写。 将isCase重命名为is_case确实可以在响应json时去掉case,但这似乎不太正确。 为什么Jackson会将单个java字段映射为两个字段? POJO声明如下: public class CreateRuleRe

POJO中有一个isCase字段,它被映射到case,同时也是case(这不是预期的)。 删除@JsonProperty注释可以去掉json中的is_case字段,但是is_case是它应该的样子。 将@JsonIgnore放在isCase上并不能消除json响应中的大小写。 将isCase重命名为is_case确实可以在响应json时去掉case,但这似乎不太正确。 为什么Jackson会将单个java字段映射为两个字段? POJO声明如下:

public class CreateRuleResponse {
    @JsonProperty(value = "rule_name", required = true)
    private String name;

    @JsonProperty("rule_num")
    private String ruleNum;

    @JsonProperty(value = "rule_category")
    private RuleCategory ruleCategory;

    @JsonProperty(value = "rule_status")
    private RuleStatus ruleStatus;

    @JsonProperty(value = "rule_channel_type")
    private String ruleChannelType;

    @JsonProperty("action")
    private RuleAction ruleAction;

    @JsonProperty("is_case")
    private Boolean isCase;

    public CreateRuleResponse() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRuleNum() {
        return ruleNum;
    }

    public void setRuleNum(String ruleNum) {
        this.ruleNum = ruleNum;
    }

    public RuleCategory getRuleCategory() {
        return ruleCategory;
    }

    public void setRuleCategory(RuleCategory ruleCategory) {
        this.ruleCategory = ruleCategory;
    }

    public RuleStatus getRuleStatus() {
        return ruleStatus;
    }

    public void setRuleStatus(RuleStatus ruleStatus) {
        this.ruleStatus = ruleStatus;
    }

    public String getRuleChannelType() {
        return ruleChannelType;
    }

    public void setRuleChannelType(String ruleChannelType) {
        this.ruleChannelType = ruleChannelType;
    }

    public RuleAction getRuleAction() {
        return ruleAction;
    }

    public void setRuleAction(RuleAction ruleAction) {
        this.ruleAction = ruleAction;
    }

    public Boolean getCase() {
        return isCase;
    }

    public void setCase(Boolean aCase) {
        isCase = aCase;
    }
}

它正在映射变量和getter方法。

将此getter方法从
getCase()
重命名为
getIsCase()
(遵循约定)。Jackson将其视为两个不同的字段,因为getter和字段名不匹配。

但为什么其他字段不会出现这种情况?因为isCase是名为“case”的布尔值的getter方法的常规名称。现在您有了由注释定义的JSON属性“isCase”,还有JSON属性“case”,因为库推断您的isCase()方法用于访问名为“case”的boolen。对于其他字段,注释中的属性名称与getter函数中隐含的属性名称相同,因此每个变量只显示一个不同的属性名称。将getRuleAction()的名称更改为getPoop(),并观察发生的情况。按照约定,isCase的getter应为isIsCase(),因为它是一个布尔值。或者您可以将变量isCase更改为“case”,并将getter命名为isCase(),以匹配它们。这是有意义的,但同时getter getRuleAction有一个ruleAction属性,并用“action”注释,rule\u action属性也会因为getter方法而出现在json中,这有意义吗?或者,getRuleAction是ruleAction属性的常规名称,这一事实是否使得rule\u操作字段不会弹出?