Java处理请求接口后返回的json数据-利用对象进行处理

Java处理请求接口后返回的json数据-利用对象进行处理

友情提示:
此方法利用的是阿里的fastjson,请注意使用前引用
不使用对象直接对字符串进行操作,请前往本文文末连接;

项目场景:

之前写过一篇关于Java对json字符串的处理.当时想着偷个懒,直接获取;后来发现;当使用频率较多的时候,就不太方便了. 咱们都是学过面向对象的,这里都已经告诉咱们的了,面向对象嘛!既然是面向对象编程 那就向json的数据转化为对象呗

处理思路:

  1. 需要根据接收的json对象构建对象,
  2. 将你所有需要的数据全部封装未对象!
  3. 再利用阿里(fastjson) /google(Gson)的 json转对象的方法
  4. 直接转为对象,再直接操作对象

假设以下是我们接收到的json,我们需要的是detail中的数据;
则需要构建实体dataItems 以及包含dataItems的实体;
然后直接进行转换;

在这里插入图片描述

示例代码:

  • dataItems实体(假设都是String类型)


public class DataIteams {
        private  String  phoneNum;
        private  String  aramDateTime;
        private  String  aramType;
        private  String  lon;
        private  String  lat;
        private  String  devNo;
        private  String  descripton;
        private  String  since;
        private  String  amc;

    @Override
    public String toString() {
        return "DataIteams{" +
                "phoneNum='" + phoneNum + '\'' +
                ", aramDateTime='" + aramDateTime + '\'' +
                ", aramType='" + aramType + '\'' +
                ", lon='" + lon + '\'' +
                ", lat='" + lat + '\'' +
                ", devNo='" + devNo + '\'' +
                ", descripton='" + descripton + '\'' +
                ", since='" + since + '\'' +
                ", amc='" + amc + '\'' +
                '}';
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }

    public String getAramDateTime() {
        return aramDateTime;
    }

    public void setAramDateTime(String aramDateTime) {
        this.aramDateTime = aramDateTime;
    }

    public String getAramType() {
        return aramType;
    }

    public void setAramType(String aramType) {
        this.aramType = aramType;
    }

    public String getLon() {
        return lon;
    }

    public void setLon(String lon) {
        this.lon = lon;
    }

    public String getLat() {
        return lat;
    }

    public void setLat(String lat) {
        this.lat = lat;
    }

    public String getDevNo() {
        return devNo;
    }

    public void setDevNo(String devNo) {
        this.devNo = devNo;
    }

    public String getDescripton() {
        return descripton;
    }

    public void setDescripton(String descripton) {
        this.descripton = descripton;
    }

    public String getSince() {
        return since;
    }

    public void setSince(String since) {
        this.since = since;
    }

    public String getAmc() {
        return amc;
    }

    public void setAmc(String amc) {
        this.amc = amc;
    }
}

  • detail的实体

import java.util.List;

public class Detail {
    private String pageCount;
    private String totalCount;
    private String pageIndex;
    private String pageSize;
    /**
     *这个实体就是DataItems里面的数据体
     */
    private List<DataItems> dataItems;


    @Override
    public String toString() {
        return "Detail{" +
                "pageCount='" + pageCount + '\'' +
                ", totalCount='" + totalCount + '\'' +
                ", pageIndex='" + pageIndex + '\'' +
                ", pageSize='" + pageSize + '\'' +
                ", dataItems=" + dataItems +
                '}';
    }

    public String getPageCount() {
        return pageCount;
    }

    public void setPageCount(String pageCount) {
        this.pageCount = pageCount;
    }

    public String getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(String totalCount) {
        this.totalCount = totalCount;
    }

    public String getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(String pageIndex) {
        this.pageIndex = pageIndex;
    }

    public String getPageSize() {
        return pageSize;
    }

    public void setPageSize(String pageSize) {
        this.pageSize = pageSize;
    }

    public List<DataItems> getDataItems() {
        return dataItems;
    }

    public void setDataItems(List<DataItems> dataItems) {
        this.dataItems = dataItems;
    }
}

当构建了实体以后就可以直接利用方法转换了!
示例代码代码如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;

public class Main {

    public static void main(String[] args) {
       String str = "{\n" +
               "    \"code\": \"0\",\n" +
               "    \"error\": \"\",\n" +
               "    \"msg\": \"success\",\n" +
               "    \"detail\": {\n" +
               "        \"pageCount\": 1,\n" +
               "        \"totalCount\": 9,\n" +
               "        \"pageIndex\": 1,\n" +
               "        \"pageSize\": 1000,\n" +
               "        \"dataItems\": [\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990185000,\n" +
               "                \"aramType\": 1,\n" +
               "                \"lon\": 114.224438,\n" +
               "                \"lat\": 30.55706,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990186000,\n" +
               "                \"aramType\": 1,\n" +
               "                \"lon\": 114.224457,\n" +
               "                \"lat\": 30.557187,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990190000,\n" +
               "                \"aramType\": 1,\n" +
               "                \"lon\": 114.224484,\n" +
               "                \"lat\": 30.557565,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990195000,\n" +
               "                \"aramType\": 1,\n" +
               "                \"lon\": 114.224434,\n" +
               "                \"lat\": 30.557971,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990196000,\n" +
               "                \"aramType\": 1,\n" +
               "                \"lon\": 114.224388,\n" +
               "                \"lat\": 30.558073,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990200000,\n" +
               "                \"aramType\": 1,\n" +
               "                \"lon\": 114.224297,\n" +
               "                \"lat\": 30.558436,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1614736039000,\n" +
               "                \"aramType\": 27,\n" +
               "                \"lon\": 114.204813,\n" +
               "                \"lat\": 30.553443,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1615342530000,\n" +
               "                \"aramType\": 27,\n" +
               "                \"lon\": 114.216378,\n" +
               "                \"lat\": 30.561051,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            },\n" +
               "            {\n" +
               "                \"phoneNum\": \"027044039989\",\n" +
               "                \"aramDateTime\": 1616990178000,\n" +
               "                \"aramType\": 27,\n" +
               "                \"lon\": 114.222609,\n" +
               "                \"lat\": 30.554516,\n" +
               "                \"devNo\": \"\",\n" +
               "                \"descripton\": \"\",\n" +
               "                \"since\": \"\",\n" +
               "                \"amc\": \"\"\n" +
               "            }\n" +
               "        ]\n" +
               "    },\n" +
               "}";


        //先转换成JSONObject类型
        String json = JSON.parseObject(str).getString("detail");
        Detail detail = JSONObject.parseObject(json, Detail.class);
        System.out.println(detail);
    }

}

运行的结果:

获得的detail对象就可以直接使用get和set方法获取数据了

附上方法:

//Javabean对象转换成String类型的JSON字符串
JSONObject.toJSONString(Javabean对象)
 
//String类型的JSON字符串转换成Javabean对象
JSONObject.toJavaObject(JSON字符串,Javabean.class)
 
//Json字符串转换成JSONObject对象
JSONObject.parseObject(JSON字符串)
 
//JSON字符串转换成Javabean对象
JSONObject.parseObject(JSON字符串,Javabean.class)

不想用对象的形式,这里有直接使用操作json对象的的方法!.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值