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;
}
}