package yuanCheng; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import yuanCheng.bean.NeedInfo; import yuanCheng.constant.SapConstant; public class Controller { public static void main(String[] args) { // TODO Auto-generated method stub init("SP","S"); } public static void init(String company, String cardType) { //String url=String.format(SapConstant.PARTNER_INIT +"?Company={0}&CardType={1}",company,cardType); String url = MessageFormat.format(SapConstant.PARTNER_INIT,company,cardType);//封装请求路径和请求参数 System.out.println("url==========="+url); String res = HttpUtil.doGet(url,null);//发送远程get请求 Map<String,Object> result = JSONObject.parseObject(res, Map.class);//将json串转换成map类型 System.out.println("result====="+result); Map<String,Object>data=JSONObject.parseObject(JSONObject.toJSONString(result.get("data")),Map.class);//获取data对象中的值 List<Map<String,Object>>list=getList(data.get("placeOfDelivery"));//获取placeOfDelivery中的值转换成list System.out.println("list=============="+list); System.out.println("getlistValue======"+list.get(0)); //将map转换成实体类中的值 NeedInfo info=JSONObject.parseObject(JSONObject.toJSONString(list.get(0)),NeedInfo.class);//将map中的值放入实体类中,实体类名称和map字段名称不一致使用@JSONField(name="lineNum")注解转换 System.out.println("将名称不一致字段的值放入对应字段中info============"+info); } //将object类型的list转换成list public static List<Map<String,Object>>getList(Object obj){ List<Map<String,Object>> result = new ArrayList<>(); if (obj instanceof List<?>) { for (Object o : (List<?>) obj) { result.add(Map.class.cast(o)); } } result.forEach(System.out::println); // 输出:1 ab return result; } }
//实体类
package yuanCheng.bean; import java.io.Serializable; import com.alibaba.fastjson.annotation.JSONField; public class NeedInfo implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @JSONField(name="lineNum") private String line; @JSONField(name="value") private String valueName; public String getLine() { return line; } public void setLine(String line) { this.line = line; } public String getValueName() { return valueName; } public void setValueName(String valueName) { this.valueName = valueName; } @Override public String toString() { return "NeedInfo [line=" + line + ", valueName=" + valueName + "]"; } }
//远程调用接口util类
package yuanCheng; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; /** * create by Dell on 2020/6/17 */ public class HttpUtil { //get请求 public static String doGet(String url,String authValue){ String result = null; CloseableHttpClient httpClient = HttpClients.createDefault(); ResponseHandler<String> responseHandler = new BasicResponseHandler(); try { HttpGet httpGet = new HttpGet(url); httpGet.setHeader("Content-type", "application/json"); if(null!=authValue){ httpGet.setHeader("Authorization","Bearer "+authValue); } result = httpClient.execute(httpGet, responseHandler); } catch (Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } return result ; } // post请求参数为json格式 public static String doJsonPost(String url, String json,String authValue) { String result = null; CloseableHttpClient httpClient = HttpClients.createDefault(); ResponseHandler<String> responseHandler = new BasicResponseHandler(); try { HttpPost httpPost = new HttpPost(url); StringEntity requestEntity = new StringEntity(json, "utf-8"); requestEntity.setContentEncoding("UTF-8"); httpPost.setHeader("Content-type", "application/json"); if(null!=authValue){ httpPost.setHeader("Authorization","Bearer "+authValue); } httpPost.setEntity(requestEntity); result = httpClient.execute(httpPost, responseHandler); } catch (Exception e) { System.out.println(e.getMessage()); } finally { try { httpClient.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } return result; } }