json - 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,但没有奏效。
解决方案
通过使用上面定义的变量@JsonProperty,您可以完成此操作。
public class MappingSSNValidation {
@JsonProperty("Group")
protected Group group = new Group();
//Public getters and setters.
}
推荐阅读
- java - 平面 XML 到层次结构 XML
- json - 即使返回 HTTP 200,也不会调用 AJAX 成功函数
- javascript - 查看数组是否有两个对象的两个不同属性具有相同值的最佳方法是什么?
- android - 如何在flutter中从firebase存储中删除图像
- tensorflow - 如何使用已安装的 Google 驱动器中的 Tensorflow 在 Google Colab 笔记本中加载图像
- c# - 未剪裁的重叠图像
- vim - 为未知扩展名的文件设置注释字符串
- java - 如何从 onoptionsitemselected 访问所有菜单项
- javascript - Javascript 停止 setInterval
- string - 如何在 OCaml 中创建一个字典,将第一个列表的每个元素与其在第二个列表中的出现次数相关联?