|
java处理请求接口后返回的json数据-直接处理json字符串
处理思路:
- 将返回的数据接收到一个String对象中(有时候需要自己选择性的取舍接收)
- 再将string转换为JSONObject对象
- 用get()方法获取到对应的值
注意:基于第三点的特殊情况,如果返回的json里面出现多组数据的情况,则需要转换为数据(用JSONObject.parseArrat()转换再进行操作 ,可无限套娃)
调用接口,请求数据
1.post方法
package com.zc.zcdj.utils;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;
import java.net.URI;
import java.util.*;
public static JSONObject postResponse(String url,JSONObject jsonParam){
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
HttpPost post = new HttpPost(url);
JSONObject jsonObject = null;
try {
StringEntity s = new StringEntity(jsonParam.toString(),"UTF-8");
s.setContentType("application/json");
post.setEntity(s);
post.setHeader("Content-Type","application/json");
HttpResponse res = client.execute(post);
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
/*返回json格式*/
jsonObject = JSONObject.parseObject(EntityUtils.toString(res.getEntity()));
}
} catch (IOException e) {
System.out.println("接口调用出错!");
e.printStackTrace();
throw new RuntimeException(e);
}
return jsonObject;
}2.get方法
import com.alibaba.fastjson.JSONObject;
import edu.zhku.fire_ant_project.config.WxConstant;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
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.HttpClients;
import org.apache.http.util.EntityUtils;
public class HttpCallOtherInterfaceUtils {
public static void main(String args[]) {
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ WxConstant.appid +"&secret="+WxConstant.secret;
HttpGet httpGet=new HttpGet(url);
JSONObject jsonObject = null;
try {
HttpResponse res = client.execute(httpGet);
if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 返回json格式:
jsonObject = JSONObject.parseObject(EntityUtils.toString(res.getEntity()));
System.out.println(jsonObject);
}
} catch (Exception e) {
System.out.println("服务间接口调用出错!");
e.printStackTrace();
}
}
}
处理返回后的json数据
参考代码:
package com.az;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JsonStr {
public static void main(String[] args) {
//1.比如从前端接收的是这个样子的json字符串,但是我们是不能直接获取到经度 纬度所对应的值的,所以必须要对这个字符串进行解析,
String str = "{\"code\":\"0\"," +
"\"error\":null," +
"\"msg\":\"success\"," +
"\"detail\":[\n" +
" {\"phoneNum\":\"013012401091\",\n" +
" \"lat\":34.431864,\n" +
" \"lon\":109.25992,\n" +
" \"height\":360,\n" +
" \"speed\":33,\n" +
" \"direction\":10,\n" +
" \"gpsTime\":1615420800000,\n" +
" \"gpsDateTime\":1615420800000,\n" +
" \"mileage\":253830800,\n" +
" \"alarms\":[24],\n" +
" \"status\":[1,2,21],\n" +
" \"property\":{}\n" +
" }" +
" ]" +
" }";
//先转换成JSONObject类型
JSONObject jsonObj = JSON.parseObject(str);
//通过JSONObject中的getString("key")方法,得到对应的值 {"code":"0","error":null,"msg":"success"}这种类型
System.out.println("code:"+jsonObj.getString("code"));
//2.字符串中含有数组的,比如像detail中的数据
JSONArray jsonInfo = JSONObject.parseArray(jsonObj.getString("detail"));//将jsonObj解析成json数组
for (int i = 0; i < jsonInfo.size(); i++) {//遍历detail信息
JSONObject jsonDetailInfo = jsonInfo.getJSONObject(i);//根据下标以此拿数据,每一个数据又是一个JSONObject对象,所以用JSONObject接收
String lat = jsonDetailInfo.getString(&#34;lat&#34;);
String lon = jsonDetailInfo.getString(&#34;lon&#34;);
String gpsDateTime = jsonDetailInfo.getString(&#34;gpsDateTime&#34;);
//然后进行其他处理
System.out.println(&#34;lat:&#34;+lat+&#34;;lon:&#34;+lon+&#34;;gpsDateTime:&#34;+gpsDateTime);
}
}
}
例子: 请求数据要求分页 所以采取循环
返回值说明:
{
&#34;code&#34;: &#34;200&#34;,
&#34;data&#34;: {
&#34;endRow&#34;: 2,
&#34;firstPage&#34;: 1,
&#34;hasNextPage&#34;: true,
&#34;hasPreviousPage&#34;: false,
&#34;isFirstPage&#34;: true,
&#34;isLastPage&#34;: false,
&#34;lastPage&#34;: 8,
&#34;list&#34;: [
{
&#34;packingUnit&#34;: &#34;盒&#34;, //包装单位
&#34;factory&#34;: &#34;河北百善药业有限公司&#34;, //生产企业
&#34;salePrice&#34;: 11.7, //销售价
&#34;fullSalePrice&#34;: 11.5, //整件销售价
&#34;inventoryQuantity&#34;: 172, //库存
&#34;pictureUrl&#34;: &#34;/upload/product/pic/2021/11/20101013-2-424389.png&#34;, //商品图片
&#34;policyTitle&#34;: &#34;10盒起积0.5分/盒,20盒起积1分/盒&#34;,//商品政策:比如10盒积1分意思是10盒每盒减1元,10s5:表示买10盒送5盒
&#34;policyStartDate&#34;: &#34;2022-11-01&#34;,//商品政策开始日期
&#34;policyEndDate&#34;: &#34;2022-11-30&#34;,//商品政策结束日期
&#34;validDateStr&#34;: &#34;2024-09-07&#34;,//最近批号有效期
&#34;batchNumber&#34;: &#34;2207012&#34;, //最近批号
&#34;registerFileUrl&#34;: &#34;https://img.zc511.com/data/uploadRegisterFileOne.shtml?productCode=20101013-2&#34;, // 注册资料下载URL
&#34;authorizeNumber&#34;: &#34;国药准字Z20063720&#34;,
&#34;rowId&#34;: 1,
&#34;barCode&#34;: &#34;6909557000263&#34;,//商品条码
&#34;parseProductName&#34;: &#34;接骨片&#34;,//商品名称
&#34;productCode&#34;: &#34;20101013-2&#34;,//商品条码
&#34;countryCode&#34;: &#34;ZG01AAJ0247010302685&#34;,//国家码 医保码
&#34;packingAmount&#34;: 200,//大包装
&#34;parseProductSpec&#34;: &#34;60片&#34;,//规格
&#34;retailPrice&#34;: 196,//市场零售价
&#34;minPackingNumber&#34;: 0//最小购买包装
}
],
&#34;navigatePages&#34;: 8,
&#34;navigatepageNums&#34;: [
1,
2,
3,
4,
5,
6,
7,
8
],
&#34;nextPage&#34;: 2,
&#34;pageNum&#34;: 1,
&#34;pageSize&#34;: 2,
&#34;pages&#34;: 5627,
&#34;prePage&#34;: 0,
&#34;size&#34;: 2,
&#34;startRow&#34;: 1,
&#34;total&#34;: 11254
},
&#34;msg&#34;: &#34;&#34;,
&#34;success&#34;: true
}HttpCilentutil
请求接口数据
package com.zc.zcdj.utils;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;
import java.net.URI;
import java.util.*;
public class HttpClientUtil
{
public static JSONObject postResponse(String url,JSONObject jsonParam){
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
HttpPost post = new HttpPost(url);
JSONObject jsonObject = null;
try {
StringEntity s = new StringEntity(jsonParam.toString(),&#34;UTF-8&#34;);
s.setContentType(&#34;application/json&#34;);
post.setEntity(s);
post.setHeader(&#34;Content-Type&#34;,&#34;application/json&#34;);
HttpResponse res = client.execute(post);
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
/*返回json格式*/
jsonObject = JSONObject.parseObject(EntityUtils.toString(res.getEntity()));
}
} catch (IOException e) {
System.out.println(&#34;接口调用出错!&#34;);
e.printStackTrace();
throw new RuntimeException(e);
}
return jsonObject;
}
//请求一次接口 先获取分页后的总数据
public static Map<String,Object> getOneRequest(){
String url =&#34;http://gateway.zc511.com/getway/v2/product_list_get.shtml&#34;;
JSONObject params = new JSONObject();
params.put(&#34;timestamp&#34;,&#34;1650865510301&#34;);
params.put(&#34;appKey&#34;,&#34;ZBKJ&#34;);
params.put(&#34;secret&#34;,&#34;123&#34;);
params.put(&#34;sign&#34;,&#34;1186D2A92FC3AB4E5671EBF58B9896A6&#34;);
params.put(&#34;buyerCode&#34;,&#34;3330020298-1&#34;);
params.put(&#34;pageNum&#34;,&#34;1&#34;);
params.put(&#34;pageSize&#34;,&#34;2000&#34;);
JSONObject jsonObject = HttpClientUtil.postResponse(url,params);
// System.out.println(&#34;第一次请求:&#34;+jsonObject);
Boolean success = (Boolean) jsonObject.get(&#34;success&#34;);
JSONObject data = (JSONObject) jsonObject.get(&#34;data&#34;);
Boolean isLastPage =(Boolean) data.get(&#34;isLastPage&#34;);//是否为最后一页
Integer pages =(Integer) data.get(&#34;pages&#34;);//一共多少页 按每页取多少条进行计算的(共可以获取多少次)
Integer total = (Integer)data.get(&#34;total&#34;);// 总数据
Integer pageNum = (Integer) data.get(&#34;pageNum&#34;);//当前页数
Map<String, Object> response = new HashMap<>();
response.put(&#34;pages&#34;,pages);
response.put(&#34;isLastPage&#34;,isLastPage);
response.put(&#34;total&#34;,total);
response.put(&#34;data&#34;,data);
response.put(&#34;pageNum&#34;,pageNum);
return response;
}
}
controller
package com.zc.zcdj.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.xpath.internal.operations.Bool;
import com.zc.zcdj.domain.LhkjHzhnData;
import com.zc.zcdj.domain.ResponseEntity;
import com.zc.zcdj.mapper.LhkjHzhnDataMapper;
import com.zc.zcdj.service.ILhkjHzhnDataService;
import com.zc.zcdj.utils.HttpClientUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
* <p>
* 前端控制器
* </p>
*
* @author guoshanshan
* @since 2023-03-21
*/
@Component
public class LhkjHzhnDataController {
@Autowired
private ILhkjHzhnDataService lhkjHzhnDataService;
@Autowired
private LhkjHzhnDataMapper lhkjHzhnDataMapper;
@Autowired
private JdbcOperations jdbcTemplate;
private static final Logger log = LoggerFactory.getLogger(&#34;获取珍诚全量数据&#34;);
/**
* 获取珍诚全量数据
*/
// @Scheduled(cron = &#34;0 14 13 ? * *&#34;)
// public void getAll(){
// System.out.println(&#34;111111111111111111111111111111&#34;);
// lhkjHzhnDataService.getProductList();
// }
@Scheduled(cron = &#34;0 49 19 ? * *&#34;)
public void getProductList() {
Map<String, String> AllTybm = lhkjHzhnDataMapper.getTybm().stream().filter(s -> s.get统一商品编码() != null).filter(s -> s.get规则() != null).collect(Collectors.toMap(s -> s.get规则(), s -> s.get统一商品编码()));
log.info(&#34;第一次请求珍诚接口...&#34;);
// 请求第一次获取数据总条数 以及分页后循环次数
Map<String, Object> response = HttpClientUtil.getOneRequest();
Integer pages = (Integer) response.get(&#34;pages&#34;);//
Integer total = (Integer) response.get(&#34;total&#34;);
Integer pageNum = (Integer) response.get(&#34;pageNum&#34;);//当前页数
// Boolean isLastPage = (Boolean) response.get(&#34;isLastPage&#34;);
// JSONObject data = (JSONObject) response.get(&#34;data&#34;);
log.info(&#34;获取珍诚商品列表全量数据共有&#34; + total + &#34;条,共有&#34; + pages + &#34;页数据&#34;);
log.info(&#34;珍诚全量开始执行...&#34;);
for (int i = 1; i <= pages; i++) {
String url = &#34;http://gateway.zc511.com/getway/v2/product_list_get.shtml&#34;;
JSONObject params = new JSONObject();
params.put(&#34;timestamp&#34;, &#34;1650865510301&#34;);
params.put(&#34;appKey&#34;, &#34;ZBKJ&#34;);
params.put(&#34;secret&#34;, &#34;123&#34;);
params.put(&#34;sign&#34;, &#34;1186D2A92FC3AB4E5671EBF58B9896A6&#34;);
params.put(&#34;buyerCode&#34;, &#34;3330020298-1&#34;);
params.put(&#34;pageNum&#34;, pageNum);
params.put(&#34;pageSize&#34;, &#34;2000&#34;);
JSONObject jsonObject = HttpClientUtil.postResponse(url, params);
log.info(&#34;开始获取第&#34; + i + &#34;页数据&#34;);
JSONObject data = (JSONObject) jsonObject.get(&#34;data&#34;);
Boolean isLastPage = (Boolean) data.get(&#34;isLastPage&#34;);//是否为最后一页
// 获取list中的商品数据 JSONArray
JSONArray list = data.getJSONArray(&#34;list&#34;);
for (int j = 0; j < list.size(); j++) {
LhkjHzhnData hzhnData = new LhkjHzhnData();
String packingUnit = list.getJSONObject(j).getString(&#34;packingUnit&#34;);//包装单位
Double salePrice = list.getJSONObject(j).getDouble(&#34;salePrice&#34;);//销售价
String factory = list.getJSONObject(j).getString(&#34;factory&#34;);//生产企业
Integer inventoryQuantity = list.getJSONObject(j).getInteger(&#34;inventoryQuantity&#34;);//库存
Date validDateStr = list.getJSONObject(j).getDate(&#34;validDateStr&#34;);//有效期
String authorizeNumber = list.getJSONObject(j).getString(&#34;authorizeNumber&#34;);//国药准字
String barCode = list.getJSONObject(j).getString(&#34;barCode&#34;);//商品条码
String parseProductName = list.getJSONObject(j).getString(&#34;parseProductName&#34;);//商品名称
String packingAmount = list.getJSONObject(j).getString(&#34;packingAmount&#34;);//大包装
String parseProductSpec = list.getJSONObject(j).getString(&#34;parseProductSpec&#34;);//规格
String minPackingNumber = list.getJSONObject(j).getString(&#34;minPackingNumber&#34;);//最小购买包装
if (authorizeNumber != null && parseProductSpec != null) {
String authorizeNumberNew = authorizeNumber.replaceAll(&#34;[^a-zA-Z/0-9]&#34;, &#34;&#34;);
String parseProductSpecNew = parseProductSpec.replaceAll(&#34;[^0-9]&#34;, &#34;&#34;);
String tj = authorizeNumberNew.toUpperCase() + parseProductSpecNew;
hzhnData.set统一编码(&#34;0&#34;);
String tybm = (String) AllTybm.get(tj);
if (tybm != null && tybm != &#34;0&#34;) {
hzhnData.set统一编码(tybm);
}
}
hzhnData.set药品名称(parseProductName);
hzhnData.set规格(parseProductSpec);
hzhnData.set产地(factory);
hzhnData.set单位(packingUnit);
hzhnData.set大包装(packingAmount);
hzhnData.set批准文号(authorizeNumber);
hzhnData.set库存数量(inventoryQuantity);
hzhnData.set价格(salePrice);
hzhnData.setTxm(barCode);
SimpleDateFormat sdf = new SimpleDateFormat(&#34;yyyy-MM-dd&#34;);
if (validDateStr != null) {
hzhnData.set有效期(sdf.format(validDateStr));
} else {
hzhnData.set有效期(null);
}
hzhnData.set库区(&#34;珍诚&#34;);
hzhnData.set供应商(&#34;珍诚&#34;);
hzhnData.set中包装(minPackingNumber);
Date date = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat(&#34;yyyy-MM-dd HH:mm:ss&#34;);
hzhnData.setStoragedate(sdf1.format(date));
// hzhnData.set备注();
// hzhnData.setHyid();
System.out.println(&#34;第&#34; + (j + 1) + &#34;条&#34; + hzhnData);
lhkjHzhnDataMapper.insert(hzhnData);
}
pageNum += 1;
}
log.info(&#34;获取珍诚全量数据运行完毕...&#34;);
}
}
若是使用频率比较多,推荐使用对象的形式处理
利用阿里的fastjson,请注意前引用

关于Java对json字符串的处理,可以直接获取;但当使用频率较多的时候,就不太方便了。既然是面向对象编程,那就向json的数据转化为对象!
处理思路:
- 需要根据接收到的json对象构建对象。
- 将所有需要的数据全部封装为对象!
- 再利用阿里(fastjson)/google(Gson)的json转对象的方法
- 直接转为对象,再直接操作对象
假设以下是我们接收到的json,我们需要的是detail中的数据;
则需要构建实体dataItems以及包含dataItems的实体
然后直接进行转换:

示例代码:实体(假设都是String类型)
dataItems
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 &#34;DataIteams{&#34; +
&#34;phoneNum=&#39;&#34; + phoneNum + &#39;\&#39;&#39; +
&#34;, aramDateTime=&#39;&#34; + aramDateTime + &#39;\&#39;&#39; +
&#34;, aramType=&#39;&#34; + aramType + &#39;\&#39;&#39; +
&#34;, lon=&#39;&#34; + lon + &#39;\&#39;&#39; +
&#34;, lat=&#39;&#34; + lat + &#39;\&#39;&#39; +
&#34;, devNo=&#39;&#34; + devNo + &#39;\&#39;&#39; +
&#34;, descripton=&#39;&#34; + descripton + &#39;\&#39;&#39; +
&#34;, since=&#39;&#34; + since + &#39;\&#39;&#39; +
&#34;, amc=&#39;&#34; + amc + &#39;\&#39;&#39; +
&#39;}&#39;;
}
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 &#34;Detail{&#34; +
&#34;pageCount=&#39;&#34; + pageCount + &#39;\&#39;&#39; +
&#34;, totalCount=&#39;&#34; + totalCount + &#39;\&#39;&#39; +
&#34;, pageIndex=&#39;&#34; + pageIndex + &#39;\&#39;&#39; +
&#34;, pageSize=&#39;&#34; + pageSize + &#39;\&#39;&#39; +
&#34;, dataItems=&#34; + dataItems +
&#39;}&#39;;
}
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 = &#34;{\n&#34; +
&#34; \&#34;code\&#34;: \&#34;0\&#34;,\n&#34; +
&#34; \&#34;error\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;msg\&#34;: \&#34;success\&#34;,\n&#34; +
&#34; \&#34;detail\&#34;: {\n&#34; +
&#34; \&#34;pageCount\&#34;: 1,\n&#34; +
&#34; \&#34;totalCount\&#34;: 9,\n&#34; +
&#34; \&#34;pageIndex\&#34;: 1,\n&#34; +
&#34; \&#34;pageSize\&#34;: 1000,\n&#34; +
&#34; \&#34;dataItems\&#34;: [\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990185000,\n&#34; +
&#34; \&#34;aramType\&#34;: 1,\n&#34; +
&#34; \&#34;lon\&#34;: 114.224438,\n&#34; +
&#34; \&#34;lat\&#34;: 30.55706,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990186000,\n&#34; +
&#34; \&#34;aramType\&#34;: 1,\n&#34; +
&#34; \&#34;lon\&#34;: 114.224457,\n&#34; +
&#34; \&#34;lat\&#34;: 30.557187,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990190000,\n&#34; +
&#34; \&#34;aramType\&#34;: 1,\n&#34; +
&#34; \&#34;lon\&#34;: 114.224484,\n&#34; +
&#34; \&#34;lat\&#34;: 30.557565,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990195000,\n&#34; +
&#34; \&#34;aramType\&#34;: 1,\n&#34; +
&#34; \&#34;lon\&#34;: 114.224434,\n&#34; +
&#34; \&#34;lat\&#34;: 30.557971,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990196000,\n&#34; +
&#34; \&#34;aramType\&#34;: 1,\n&#34; +
&#34; \&#34;lon\&#34;: 114.224388,\n&#34; +
&#34; \&#34;lat\&#34;: 30.558073,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990200000,\n&#34; +
&#34; \&#34;aramType\&#34;: 1,\n&#34; +
&#34; \&#34;lon\&#34;: 114.224297,\n&#34; +
&#34; \&#34;lat\&#34;: 30.558436,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1614736039000,\n&#34; +
&#34; \&#34;aramType\&#34;: 27,\n&#34; +
&#34; \&#34;lon\&#34;: 114.204813,\n&#34; +
&#34; \&#34;lat\&#34;: 30.553443,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1615342530000,\n&#34; +
&#34; \&#34;aramType\&#34;: 27,\n&#34; +
&#34; \&#34;lon\&#34;: 114.216378,\n&#34; +
&#34; \&#34;lat\&#34;: 30.561051,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; },\n&#34; +
&#34; {\n&#34; +
&#34; \&#34;phoneNum\&#34;: \&#34;027044039989\&#34;,\n&#34; +
&#34; \&#34;aramDateTime\&#34;: 1616990178000,\n&#34; +
&#34; \&#34;aramType\&#34;: 27,\n&#34; +
&#34; \&#34;lon\&#34;: 114.222609,\n&#34; +
&#34; \&#34;lat\&#34;: 30.554516,\n&#34; +
&#34; \&#34;devNo\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;descripton\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;since\&#34;: \&#34;\&#34;,\n&#34; +
&#34; \&#34;amc\&#34;: \&#34;\&#34;\n&#34; +
&#34; }\n&#34; +
&#34; ]\n&#34; +
&#34; },\n&#34; +
&#34;}&#34;;
//先转换成JSONObject类型
String json = JSON.parseObject(str).getString(&#34;detail&#34;);
Detail detail = JSONObject.parseObject(json, Detail.class);
System.out.println(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) |
|