spring boot后端处理JSON数据

        今天在写项目的时候发现后端进行网络服务的时候返回了这样的数据

Response Data: 

 {"session_key":"ZhUHT9lSUZvuGzeplJBCuw==","openid":"oI_Zq5Z8XY8buNdVHvK--Fo2vDEs"}

        前端所需要的数据是openid,那么后端要怎么处理这些数据提取openid字符串返回给前端呢 

这里先给出解决代码

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public String processWeChatLogin(String code) {
        // 构建请求 URL
        String apiUrl = "https://api.weixin.qq.com/sns/jscode2session";
        String url = apiUrl + "?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code";
        // 发送 HTTP 请求并获取响应
        RestTemplate restTemplate = new RestTemplate();
        String responseData = restTemplate.getForObject(url, String.class);

        // 调用提取方法,获取openid
        String openid = extractOpenIdFromResponse(responseData);
        System.out.println("Extracted OpenID: " + openid);
        return openid;

    }
    private String extractOpenIdFromResponse(String responseData) {
        
        System.out.println("Response Data: " + responseData);
        String openid = null;
        if (responseData != null) {
            try {
                ObjectMapper objectMapper = new ObjectMapper();
                JsonNode jsonNode = objectMapper.readTree(responseData);

                if (jsonNode.has("openid")) {
                    openid = jsonNode.get("openid").asText();
                }
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
        return openid;
    }

        当我们处理 JSON 数据时,我们通常使用树状结构来表示和操作它。在 Jackson 库中,JsonNode 就是这样一种树状结构的抽象表示。JsonNode 对象代表 JSON 数据的一个节点,可以是对象、数组、字符串、数字等不同类型的节点。

        在上述代码中,我们通过 objectMapper.readTree(responseData) 将 JSON 字符串解析成一个 JsonNode 对象。然后,我们使用这个 JsonNode 对象来访问和操作 JSON 数据。

responseData的内容是

 {"session_key":"ZhUHT9lSUZvuGzeplJBCuw==","openid":"oI_Zq5Z8XY8buNdVHvK--Fo2vDEs"}

接下来,我们进行解释:

创建 ObjectMapper 对象:

ObjectMapper objectMapper = new ObjectMapper();

我们创建了一个 ObjectMapper 对象,这是 Jackson 库的核心类,用于处理 JSON 数据。

使用 readTree 方法解析 JSON:

JsonNode jsonNode = objectMapper.readTree(responseData);

objectMapper.readTree(responseData)

   将 JSON 字符串解析为一个 JsonNode 对象。现在,jsonNode 代表了整个 JSON 结构。

检查是否包含 openid 字段:

if (jsonNode.has("openid")) { openid = jsonNode.get("openid").asText(); }

在这个例子中,jsonNode 代表了整个 JSON 数据,我们检查它是否包含 "openid" 字段,如果包含,我们获取该字段的值作为字符串,并将其赋值给 openid 变量。

  • jsonNode.has("openid") 检查 JSON 数据中是否包含 "openid" 字段。
  • 如果包含,jsonNode.get("openid") 获取 "openid" 字段对应的节点。
  • asText() 将该节点的值作为字符串获取。

 JsonNode 是 Jackson 库中用于表示和操作 JSON 数据的一种抽象结构,它提供了一组方法来方便地访问和操作 JSON 树。使用 ObjectMapper 可以将 JSON 字符串转换为 JsonNode 对象,从而简化了 JSON 数据的处理过程。

        控制台打印为

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值