java-使用unirest自身的jsonnode解析请求解析结果

java-使用unirest自身的jsonnode解析请求解析结果


不使用fastjson,而是使用unirest自身的jsonnode去解析

获取结果代码

    private  HttpResponse<JsonNode> getResponseFromApiByGood(){
    //去拿cookies
    CookieHandler cookieManager = CookieHandler.getDefault();
    Map<String, List<String>> result = null;
    try {
        result = cookieManager.get(new URI("https://xxxxxx"), new HashMap<>());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    java.util.List cookies = result.get("Cookie");
    cookie = (String) cookies.get(0);
        
     try {
         Map<String,String> headers=new HashMap<>();
         headers.put("accept","application/json, text/plain, */*");
         headers.put("accept","application/json, text/plain, */*");
         headers.put("accept-encoding","gzip, deflate, br");
         headers.put("accept-language","zh-CN,zh;q=0.9");
         headers.put("accept-language","zh-CN,zh;q=0.9");
         //使用cookies
         headers.put("cookie",cookie);
       res = Unirest.get("https://xxxxx")
          .headers(headers)
          .asJson();
 
         System.out.println(res.getBody().toString());

     } catch (UnirestException e) {
         e.printStackTrace();
     }

     return res;
 }

解析

asString解析

如果Unirest使用的是asString,比如singleResBody是结果

    private String parseJsonRes(String field){
        com.alibaba.fastjson.JSONObject itemObject = JSON.parseObject(singleResBody.getObject().toString());
        com.alibaba.fastjson.JSONObject dataJsonObj = (JSONObject) itemObject.get("data");
        return dataJsonObj.get(field).toString();
    }
    使用
    public  String getProblemDetail() {
        return parseJsonRes("name");
    }

asJson解析

如果Unirest使用的是asJson,比如singleResBody是结果

HttpResponse<JsonNode> pageOneTask = getResponseFromApi(1, "xxxx");

JsonNode resBody1 = pageOneTask.getBody();
JSONObject resObject1 = resBody1.getObject();

本来是obj,我们强转为字符或者JSONObject 即可
String re=resObject1.get("success");
System.out.println("success:"+re);

JSONObject dat=resObject1.get("data");
System.out.println("pageVO:"+dat.get("pageVO"));

其他

{
    "code": 200,
    "message": "Success",
    "success": true,
    "data":{
		"result":["cc":"dd","cc1":"dd1"]
		}
   }

常用到的字符串转jsonArray,以上面示例为例data下面的result就应该通过下面的形式解析parseArray

JSONArray taskArray = JSON.parseArray(resultObject.toString());

常用到的字符串转jsonObject,如果是解析整个结果格式是json格式的,就应该是parseObject

com.alibaba.fastjson.JSONObject itemObjectt = JSON.parseObject(taskArray.get(ii).toString());

举例

如要获取creationDate的值

{
“code”: 200,
“data”: {
“pageVO”: {
“totalRows”: 2357,
“curPage”: 2,
“pageSize”: 20,
“resultMode”: 0,
“startIndex”: 21,
“endIndex”: 40,
“orderBy”: null,
“filterStr”: null,
“totalPages”: 118
},
“result”: [
{
“creationDate”: “2024-04-28 10:45:42”,

        HttpResponse<JsonNode> re = getPageContentByPage();
        JsonNode reJson = re.getBody();

        JSONArray reArray = reJson.getObject().getJSONObject("data").getJSONArray("result");
        int reSize = reArray.length();
        System.out.println(reSize+"");

        List<String> mainInfo=new ArrayList<>();
        for (int i=0;i<reSize;i++){
            String neededStr="";
            JSONObject item = (JSONObject) reArray.get(i);

            System.out.println(item.get("creationDate"));
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值