String转json格式数据

 在对接第三方平台时碰到一个小问题。第三方接口返回的数据为字符串形式,如下图所示:我接收到数据后要拿到其中的一些值。这时候就要对字符串进行处理了。

{
    "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);
  }

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值