首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态映射json

动态映射json
EN

Stack Overflow用户
提问于 2021-11-12 12:31:29
回答 1查看 40关注 0票数 0

我需要动态构建一个JSON,并且需要调用一个外部API。例如,Input : JSON基于上面的输入,我需要像下面这样动态地构建"FIRST_NAME": "XXX"

代码语言:javascript
复制
{
  "Req":{
    "user":{
      "CreatedTime":"2017-03-02T07:52:58Z",
      "UpdatedTime":"2017-03-02T07:52:58Z",
      "Details":{
        "Names":[
          {
            "Name":{
              "First":"kirtq"
            }
          }
        ]
      }
    }
  }
}

如果我将联系人号码作为输入:CONTACT_NUMBER:889999999,那么我必须构建一个如下所示的JSON

代码语言:javascript
复制
{
  "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)。我已经实现了如下所示。

代码语言:javascript
复制
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中处理这个问题的最好方法?

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 12:44:33

谁能给我个建议,在java/spring boot中处理这个问题的最好方法是什么?

如果您没有想要为其创建JSON的固定模式,那么您必须完全按照自己的方式来做。

这意味着动态组装地图,然后将其映射到json string

您可以做的改进是尝试提取公共的和可重用的组件,用于构建请求的某些部分。

我建议您创建一个类结构,以便使用一些类来保持可管理性,例如...

  1. JsonGenerationService (主服务其余代码使用)
  2. UserJsonGenerator为用户entities
  3. CustomerJsonGenerator生成customers
  4. JsonGeneratorCommon -> ->为customers
  5. JsonGeneratorCommon生成JSON ->包含

的所有常用方法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69943006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档