RestTemplate返回json数据封装

  1. 最简单方式:使用Map接收
    案例:向接口路径 /returnJson2发请求,返回的json字符串用Map接收
@RequestMapping("/returnJson3")
    public List<User> test3(@RequestBody Map<String,String> map) {
        User user = new User();
        user.setName("ee");
        user.setAge(11);
        Map<String,Object> response = new RestTemplate().postForObject("http://localhost:9000/returnJson2", user, Map.class);

        return (List<User>) response.get("users");
    }


    @RequestMapping("/returnJson2")
    public String test2(@RequestBody Map map) {
        //{"address":"wuhan","teamName":"无敌舰队","users":[{"age":10,"name":"u1"},{"age":12,"name":"u2"}]}
        System.out.println(map);
        return "{\"address\":\"wuhan\",\"teamName\":\"无敌舰队\",\"users\":[{\"age\":10,\"name\":\"u1\"},{\"age\":12,\"name\":\"u2\"}]}";
    }
  1. 用String接收,借助JSONObject转换(JSONObject的get()可取数据)也可成功
@RequestMapping("/returnJson1")
    public List<User> test1(@RequestBody Map<String,String> map) {

        String response = new RestTemplate().postForObject("http://localhost:9000/returnJson2", map, String.class);
        JSONObject jsonObject = JSON.parseObject(response);

        return (List<User>) jsonObject.get("users");
    }
  1. NG的接收方式(用类,属性含另一个类对象)
@Data
@ToString
public class Response {
    private String TeamName;
    private String address;
    //以下两种方式都是NG的
    private User data;

}
//NG
    @RequestMapping("/returnJson4")
    public User test4(@RequestBody Map<String,String> map) {

        Response response = new RestTemplate().postForObject("http://localhost:9000/returnJson2", map, Response.class);
        System.out.println(response);
        return response.getData();
    }

Console 运行结果:

Response(TeamName=无敌舰队, address=wuhan, data=null)
  1. NG的接收方式(用类,属性含另一个类对象集合)
@Data
@ToString
public class Response {
    private String TeamName;
    private String address;
    //以下两种方式都是NG的
    private List<Map<String,Object>> data;
//    private Map<String,Object>[] data;
    
}
//NG
   /* @RequestMapping("/returnJson4")
    public List<Map<String,Object>> test4(@RequestBody Map<String,String> map) {

        Response response = new RestTemplate().postForObject("http://localhost:9000/returnJson2", map, Response.class);

        return response.getData();
    }*/

    //NG
   /* @RequestMapping("/returnJson4")
    public Map<String,Object>[] test4(@RequestBody Map<String,String> map) {

        Response response = new RestTemplate().postForObject("http://localhost:9000/returnJson2", map, Response.class);

        return response.getData();
    }*/
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值