java实体类和json串字段名称不一致或者与map中字段名称不一致使用注解转化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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; } } |
//实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 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; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)