有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用rest模板中的Json,并在Spring Boot中将每个元素映射到另一个Json

我无法在SpringBoot中使用REST模板将一个已消费的json映射到另一个json到每个元素

控制器代码:

public List<Getrequests> getallrequests() {
List<Getrequests> list=Serviceobj.allrequestdata(); 
return list;
}

服务代码:

public List<Getrequests> allrequestdata() {
String urlGETList = "http://localhost:8082/myapp/userinfo/getusertype/asd454";//get by id call
ResponseEntity<Usertype[]> responseEntity =resttemplateobj.getForEntity(urlGETList, Usertype[].class);
Usertype[]objects = responseEntity.getBody();
List results = admininfoDaoobj.getallrequestsdata();
//results.add(objects);if i un comment this line of code i am getting 1 output means it just add to the list only
return results;
}

Dao代码:

public List<Getrequests> getallrequestsdata(){
String hql = "FROM Createrequest";
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
Query<Createrequest> query = getSession().createQuery(hql,Createrequest.class);
List resultlist= query.getResultList();
return resultlist;
}

Getrequests pojo类:

public class Getrequests{
        private String userid;
        private String username;
        private String userphoneno;

     .......getters and setters.....
}

用户类型pojo类:

public class Usertype{
private String usertype;
private String useraddress;

 .......getters and setters.....
}

1输出:

[
  {
    "userid":"asd454",
    "username":"satya",
    "userphoneno":"1234567890"
   },
  {
    "userid":"asd455",
    "username":"satya",
    "userphoneno":"1234567890"
   }
    [
    {
     "usertype":"admin,agent",
     "useraddress:"dsadasd,asdasdsa"
     },
     {
     "usertype":"agent",
     "useraddress:"asdasdsa"
     },
    ]
]

2输出

如果我在服务代码中注释resultlist.add(objects)意味着它没有添加到getrequest列表中,那么我将得到以下输出:

[
  {
    "userid":"asd454",
    "username":"satya",
    "userphoneno":"1234567890"
   },
  {
    "userid":"asd455",
    "username":"satya",
    "userphoneno":"1234567890"
   }
]

但是我需要映射每个用户ID,我需要显示用户类型和用户地址,如下面的输出

3输出

[
  {
    "userid":"asd454",
          [
            {
             "usertype":"admin,agent",
             "useraddress:"dsadasd,asdasdsa"
             }  ]  
    "username":"satya",
    "userphoneno":"1234567890"
   },
  {
    "userid":"asd455",
        [
           {
            "usertype":"agent",
            "useraddress:"asdasdsa"
            }
        ]
    "username":"satya",
    "userphoneno":"1234567890"
   }
]

我还尝试了在Dao中调用rest模板,但也没有得到响应

如何映射每个userid以显示usertype和用户地址,如上图3所示


共 (1) 个答案

  1. # 1 楼答案

    从您的代码片段来看,您似乎想要生成特定的POJO签名。 有很多工具可以为您提供示例json请求的存根

    从你的例子中,我想改变Getrequests就可以了, 比如:

    public class Getrequests{
            private String userid;
            private String username;
            private String userphoneno;
            private Usertype userType;
    
         .......getters and setters.....
    }
    

    您可能还需要将其更改为列表引用,这取决于您的模式和总体需求

    编辑

    public class Getrequests{
        private String userid;
        private String username;
        private String userphoneno;
        private List<Usertype> userType;
    }
    

    如果我将引用作为列表,则以下示例为输出:

    单个对象:

    {
       "userid":"69",
       "username":"asd",
       "userphoneno":"09876",
       "userType":[
          {
             "usertype":"01",
             "useraddress":"1234"
          }
       ]
    }
    

    作为一个数组:

    [
       {
          "userid":"94",
          "username":"asd",
          "userphoneno":"09876",
          "userType":[
             {
                "usertype":"01",
                "useraddress":"1234"
             }
          ]
       },
       {
          "userid":"53",
          "username":"asd",
          "userphoneno":"09876",
          "userType":[
             {
                "usertype":"01",
                "useraddress":"1234"
             }
          ]
       }
    ]