java - 动态映射 json
问题描述
我需要动态构建 JSON 并需要调用外部 API。例如,输入:"FIRST_NAME": "XXX"
基于上面的输入,我需要动态构建一个 JSON,如下所示
{
"Req":{
"user":{
"CreatedTime":"2017-03-02T07:52:58Z",
"UpdatedTime":"2017-03-02T07:52:58Z",
"Details":{
"Names":[
{
"Name":{
"First":"kirtq"
}
}
]
}
}
}
}
如果我得到联系电话作为输入:CONTACT_NUMBER:889999999
那么我必须构建一个如下所示的 JSON
{
"UpdateMemberReq": {
"Customer": {
"CreatedTime": "2017-03-02T07:52:58Z",
"UpdatedTime": "2017-03-02T07:52:58Z",
"CustomerDetails": {
"Contacts": {
"MobilePhone": {
"value": "07888728687"
}
}
}
}
}
}
像这样,每个请求我都有大约 30 个字段,我将根据我必须动态构建 JSON 来获得一个字段,一旦我动态准备 JSON,我必须通过将此 JSON 作为原始类型传递来调用外部 API(POST)身体。我已经实现如下。
List list = new ArrayList();
Name user = mapper.readValue(json2, Name.class);
System.out.println(user);
Map<String, Object> name1 = new HashMap<>();
name1.put("Name", user);
list.add(name1);
Map<String, Object> map1 = new HashMap<>();
map1.put("Names", list);
Map<String, Object> map2 = new HashMap<>();
map2.put("CustomerDetails",map1);
Map<String,Object> map = new HashMap();
map.put("Customer",map2);
任何人都可以向我建议在 java/spring boot 中处理这个问题的最佳方法吗?
谢谢!!
解决方案
任何人都可以向我建议在 java/spring boot 中处理这个问题的最佳方法吗?
鉴于您没有要为其创建 JSON 的固定模式,您必须完全按照您的方式进行操作。
这意味着动态组装地图,然后将其映射到json string
.
您可以做的改进是尝试提取通用和可重用的组件,以构建请求的某些部分。
我建议您创建一个类结构,以使某些类的事情易于管理,例如...
JsonGenerationService
(其余代码使用的主要服务)UserJsonGenerator
-> 为用户实体生成 JSONCustomerJsonGenerator
-> 为客户生成 JSONJsonGeneratorCommon
-> 包含所有常用方法
推荐阅读
- excel - 使用 VBA 将 URL 文件查询中的数据导入 Excel 工作表
- vba - 根据VBA上的行号突出显示单元格
- scrapy - 为什么我不能将scrapy与https的代理一起使用
- javascript - PHP 文件报告成功但 MySQL 数据库未更新
- r - 在 R 中使用正则表达式捕获特定的 JSON-LD 属性
- haskell - Haskell 镜头 - 棱镜组合
- python - RuntimeError:尺寸不匹配,m1:[672 x 224],m2:[672 x 224]
- java - 使用 java 的 AWS 电子邮件模板使用(批量电子邮件)
- python-3.x - Python 单击 JavaScript 中的按钮/链接
- vba - 从多个获胜者的 Excel 中的一行中选择一个得分获胜者