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

  

posted @   红尘沙漏  阅读(2403)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示