在对接第三方平台时碰到一个小问题。第三方接口返回的数据为字符串形式,如下图所示:我接收到数据后要拿到其中的一些值。这时候就要对字符串进行处理了。
{
"code": 200,
"message": "success",
"data": {
"content": [
{
"lockKeyId": "1706243568777170944",
"lockUserId": null,
"name": "init",
"phone": null,
"startTime": null,
"endTime": null,
"cycleTime": null,
"cyclePeriod": null,
"hardwareCode": "07D1",
"keyType": 2,
"keyValue": "876105",
"createTime": 1695635142000,
"state": 1,
"enabled": true,
"delTime": 0,
"deviceId": "1685831457119014912",
"deviceMac": "524F434B8DF0",
"instructId": "1706243568726839296",
"issueState": null,
"type": 1
},
{
"lockKeyId": "1686553576375193600",
"lockUserId": "1686308960757485568",
"name": "临时卡(null)",
"phone": null,
"startTime": null,
"endTime": null,
"cycleTime": null,
"cyclePeriod": null,
"hardwareCode": "07D2",
"keyType": 3,
"keyValue": "972862E2",
"createTime": 1690940682000,
"state": 1,
"enabled": true,
"delTime": 0,
"deviceId": "1685831457119014912",
"deviceMac": "524F434B8DF0",
"instructId": "1686553576362610688",
"issueState": null,
"type": 1
}
],
"totalElements": 2
},
"detailMessage": null,
"iv": null,
"success": true,
"encrypt": false
}
1、取出data数据并转为list集合
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
// 将data数据取出来,并转为list集合
public class Main {
public static void main(String[] args) throws IOException {
String jsonString = "{\"code\": 200, \"message\": \"success\", \"data\": {\"content\": [{\"lockKeyId\": \"1706243568777170944\", \"lockUserId\": null, \"name\": \"init\", \"phone\": null, \"startTime\": null, \"endTime\": null, \"cycleTime\": null, \"cyclePeriod\": null, \"hardwareCode\": \"07D1\", \"keyType\": 2, \"keyValue\": \"876105\", \"createTime\": 1695635142000, \"state\": 1, \"enabled\": true, \"delTime\": 0, \"deviceId\": \"1685831457119014912\", \"deviceMac\": \"524F434B8DF0\", \"instructId\": \"1706243568726839296\", \"issueState\": null, \"type\": 1 }, {\"lockKeyId\": \"1686553576375193600\", \"lockUserId\": \"1686308960757485568\", \"name\": \"临时卡(null)\", \"phone\": null, \"startTime\": null, \"endTime\": null, \"cycleTime\": null, \"cyclePeriod\": null, \"hardwareCode\": \"07D2\", \"keyType\": 3, \"keyValue\": \"972862E2\", \"createTime\": 1690940682000, \"state\": 1, \"enabled\": true, \"delTime\": 0, \"deviceId\": \"1685831457119014912\", \"deviceMac\": \"524F434B8DF0\", \"instructId\": \"1686553576362610688\", \"issueState\": null, \"type\": 1 }], \"totalElements\": 2 }, \"detailMessage\": null, \"iv\": null, \"success\": true, \"encrypt\": false }";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
JsonNode dataNode = jsonNode.get("data").get("content");
List<JsonNode> dataList = new ArrayList<>();
for (JsonNode item : dataNode) {
dataList.add(item);
}
// 打印提取的列表
System.out.println(dataList);
}
}
2、转为list<T>形式集合
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
String jsonString = "{\"code\": 200, \"message\": \"success\", \"data\": {\"content\": [{\"lockKeyId\": \"1706243568777170944\", \"lockUserId\": null, \"name\": \"init\", \"phone\": null, \"startTime\": null, \"endTime\": null, \"cycleTime\": null, \"cyclePeriod\": null, \"hardwareCode\": \"07D1\", \"keyType\": 2, \"keyValue\": \"876105\", \"createTime\": 1695635142000, \"state\": 1, \"enabled\": true, \"delTime\": 0, \"deviceId\": \"1685831457119014912\", \"deviceMac\": \"524F434B8DF0\", \"instructId\": \"1706243568726839296\", \"issueState\": null, \"type\": 1 }, {\"lockKeyId\": \"1686553576375193600\", \"lockUserId\": \"1686308960757485568\", \"name\": \"临时卡(null)\", \"phone\": null, \"startTime\": null, \"endTime\": null, \"cycleTime\": null, \"cyclePeriod\": null, \"hardwareCode\": \"07D2\", \"keyType\": 3, \"keyValue\": \"972862E2\", \"createTime\": 1690940682000, \"state\": 1, \"enabled\": true, \"delTime\": 0, \"deviceId\": \"1685831457119014912\", \"deviceMac\": \"524F434B8DF0\", \"instructId\": \"1686553576362610688\", \"issueState\": null, \"type\": 1 }], \"totalElements\": 2 }, \"detailMessage\": null, \"iv\": null, \"success\": true, \"encrypt\": false }";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
JsonNode dataNode = jsonNode.get("data").get("content");
List<RoomBean> roomList = new ArrayList<>();
for (JsonNode item : dataNode) {
RoomBean room = objectMapper.treeToValue(item, RoomBean.class);
roomList.add(room);
}
// 打印提取的RoomBean集合
System.out.println(roomList);
}
}
3、只拿其中某些字段的值
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
String jsonString = "{\"code\": 200, \"message\": \"success\", \"data\": {\"content\": [{\"lockKeyId\": \"1706243568777170944\", \"lockUserId\": null, \"name\": \"init\", \"phone\": null, \"startTime\": null, \"endTime\": null, \"cycleTime\": null, \"cyclePeriod\": null, \"hardwareCode\": \"07D1\", \"keyType\": 2, \"keyValue\": \"876105\", \"createTime\": 1695635142000, \"state\": 1, \"enabled\": true, \"delTime\": 0, \"deviceId\": \"1685831457119014912\", \"deviceMac\": \"524F434B8DF0\", \"instructId\": \"1706243568726839296\", \"issueState\": null, \"type\": 1 }, {\"lockKeyId\": \"1686553576375193600\", \"lockUserId\": \"1686308960757485568\", \"name\": \"临时卡(null)\", \"phone\": null, \"startTime\": null, \"endTime\": null, \"cycleTime\": null, \"cyclePeriod\": null, \"hardwareCode\": \"07D2\", \"keyType\": 3, \"keyValue\": \"972862E2\", \"createTime\": 1690940682000, \"state\": 1, \"enabled\": true, \"delTime\": 0, \"deviceId\": \"1685831457119014912\", \"deviceMac\": \"524F434B8DF0\", \"instructId\": \"1686553576362610688\", \"issueState\": null, \"type\": 1 }], \"totalElements\": 2 }, \"detailMessage\": null, \"iv\": null, \"success\": true, \"encrypt\": false }";
JSONObject jsonObject = new JSONObject(jsonString);
// 取出code值
String code = jsonObject.getString("code");
// 取出data中第一条数据中endTime值
String endTime = jsonObject.getJSONObject("data").getJSONArray("content").getJSONObject(0).getString("endTime");
// 打印提取的RoomBean集合
System.out.println(roomList);
}
}
4、谷歌json
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(byUrlParams.substring(1,byUrlParams.length() -1).replace("\\",""), JsonObject.class);
JsonArray data = jsonObject.getAsJsonArray("data");
for (int i = 0; i < data.size(); i++) {
VoNews voNews = new VoNews();
voNews.setTitle(data.get(i).getAsJsonObject().get("Title").getAsString());
voNews.setDate(data.get(i).getAsJsonObject().get("Time").getAsString());
voNews.setUrl(data.get(i).getAsJsonObject().get("Link").getAsString());
list.add(voNews);
}