ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RestTemplate远程调用、JSONObject转Map、Map转对象

2022-06-27 15:31:07  阅读:154  来源: 互联网

标签:Map String JSONObject RestTemplate nick import public


import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class TestMain {

    private  static final Logger log = LoggerFactory.getLogger(TimeTask.class);

    public static void main(String[] args) throws Exception {

        String url = "http://127.0.0.1:8080/busiget/list";

        RestTemplate restTemplate = new RestTemplate();

        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        headers.setContentType(type);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());

        ArrayList<Object> similarList = new ArrayList<>();
        similarList.add("1");
        similarList.add("2");
        similarList.add("3");

        JSONObject requestMap = new JSONObject();
        requestMap.put("name", "ldj");
        requestMap.put("age", "15");
        requestMap.put("similarList",similarList);

        HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String similarJSON = objectMapper.writeValueAsString(requestMap);
            log.info("similarJSON:{}",similarJSON);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //使用JSONObject,不需要创建实体类VO来接受返参,缺点是别人不知道里面有哪些字段,即不知道有那些key
        JSONObject body1 = restTemplate.postForObject(url, entity, JSONObject.class);

        log.info("body1:{}",objectMapper.writeValueAsString(body1));
        String str = objectMapper.writeValueAsString(body1);
        JSONObject json1 =  JSONObject.parseObject(str).getJSONObject("data");
        Object[] trades = json1.getJSONArray("trades").toArray();
        JSONObject json = JSONObject.parseObject(trades[0].toString());
        Object[] orders  = json.getJSONArray("orders").toArray();
        JSONObject order = JSONObject.parseObject(orders[0].toString());
        //JSONObject转Map
        Map<String, Object> orderMap = new HashMap<>();
        for (Map.Entry<String, Object> entry : order.entrySet()) {
            orderMap.put(entry.getKey(), entry.getValue());
        }
        //System.out.println("map对象:" + userMap.toString());
        //Map转对象
        Orders orders1 = (Orders) MapToObj.mapToObj(orderMap, Orders.class);
        System.out.println(orders1.getBuyer_nick());

/*        ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, requestMap, JSONObject.class);
        JSONObject body2 = responseEntity.getBody(); //响应体
        HttpStatus statusCode = responseEntity.getStatusCode(); //状态码
        HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息*/
    }

}
import java.lang.reflect.Field;
import java.util.Map;

public class MapToObj {
    /**
     * 把source转为target
     * @param source source
     * @param target target
     * @param <T> 返回值类型
     * @return 返回值
     * @throws Exception newInstance可能会抛出的异常
     */
    public static <T> T mapToObj(Map source, Class<T> target) throws Exception {
        Field[] fields = target.getDeclaredFields();
        T o = target.newInstance();
        for(Field field:fields){
            Object val;
            if((val=source.get(field.getName()))!=null){
                field.setAccessible(true);
                field.set(o,val);
            }
        }
        return o;
    }

}

 

public class Orders {
    private String item_meal_name;
    private String pic_path;
    private String seller_nick;
    private String buyer_nick;

    public String getItem_meal_name() {
        return item_meal_name;
    }
    public void setItem_meal_name(String item_meal_name) {
        this.item_meal_name = item_meal_name;
    }

    public String getPic_path() {
        return pic_path;
    }
    public void setPic_path(String pic_path) {
        this.pic_path = pic_path;
    }

    public String getSeller_nick() {
        return seller_nick;
    }
    public void setSeller_nick(String seller_nick) {
        this.seller_nick = seller_nick;
    }

    public String getBuyer_nick() {
        return buyer_nick;
    }
    public void setBuyer_nick(String buyer_nick) {
        this.buyer_nick = buyer_nick;
    }

}

 

标签:Map,String,JSONObject,RestTemplate,nick,import,public
来源: https://www.cnblogs.com/wenbiquan/p/16416261.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有