首页 > 解决方案 > FasterXML Object to JSON with specific Casing

问题描述

我正在尝试使用面向 SOAP 服务的 REST Web 服务。为了使其正常工作,我必须将 JSON 消息中 XML 标记的正确大小写发送到 REST 服务。

这是他们想要的:

{"mappingSSNValidation":{"Group":{"InSSN":"123456789"}}}

这是我能够创建的:

{"mappingSSNValidation":{"group":{"inSSN":"123456789"}}}

类定义:

public class Group {
    protected String InSSN = null;
    //Public getters and setters
}
public class MappingSSNValidation {
    protected Group group = new Group();
    //Public getters and setters.
}
public class MyRequest {
    protected MappingSSNValidation mappingSSNValidation = new MappingSSNValidation();
    //Public getters and setters.
}
MyRequest request = new MyRequest();
request.getMappingSSNValidation().getGroup().setInSSN("123456789");
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
mapper.writeValueAsString(request);

所以我的问题是:如何将对象名称作为包装器而不是变量名?但这只能发生在组名中。对于组内的变量,我希望使用变量名。

我认为有一个注释可以用于此,但我找不到一个有效的注释。我在 Group 类上尝试了@JsonRootName,但没有奏效。

标签: jsonfasterxml

解决方案


通过使用上面定义的变量@JsonProperty,您可以完成此操作。

public class MappingSSNValidation {
    @JsonProperty("Group")
    protected Group group = new Group();
    //Public getters and setters.
}

推荐阅读