我需要动态构建一个JSON,并且需要调用一个外部API。例如,Input : JSON基于上面的输入,我需要像下面这样动态地构建"FIRST_NAME": "XXX"
{
"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中处理这个问题的最好方法?
谢谢!!
发布于 2021-11-12 12:44:33
谁能给我个建议,在java/spring boot中处理这个问题的最好方法是什么?
如果您没有想要为其创建JSON的固定模式,那么您必须完全按照自己的方式来做。
这意味着动态组装地图,然后将其映射到json string。
您可以做的改进是尝试提取公共的和可重用的组件,用于构建请求的某些部分。
我建议您创建一个类结构,以便使用一些类来保持可管理性,例如...
JsonGenerationService (主服务其余代码使用)UserJsonGenerator为用户entitiesCustomerJsonGenerator生成customersJsonGeneratorCommon -> ->为customersJsonGeneratorCommon生成JSON ->包含的所有常用方法
https://stackoverflow.com/questions/69943006
复制相似问题