You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress REST API嵌套JSON对象键值获取失败问题

嵌套JSON解析问题解决方案(WordPress REST API场景)

结构说明

待解析JSON特征:

  • 最外层为JSON数组
  • 数组内每一项是单条内容的JSON对象
  • 目标字段wp_GP_ID嵌套在内容对象下的x_metadata对象中
    结构参考:
    结构参考示意
    原错误代码运行报错:
    运行问题截图

错误原因

  • 第一步直接将完整响应字符串转为JSONObject,但响应最外层是数组,类型不匹配直接抛出异常
  • 未逐层进入数组内的单条内容对象,直接从最外层取x_metadata键,必然找不到对应值
  • WordPress默认的自定义meta字段会以数组格式存储,直接调用getString()取数组类型值会抛出类型转换异常

正确实现代码

使用org.json库的正确解析逻辑:

import org.json.JSONArray;
import org.json.JSONObject;

public class ParseWpResponse {
    public static void parse(String _response) {
        // 1. 先将响应转为最外层JSON数组
        JSONArray postList = new JSONArray(_response);
        // 若确认接口只返回单条内容,可直接取索引0的对象,无需循环
        JSONObject singlePost = postList.getJSONObject(0);
        
        // 2. 校验字段存在再取值,避免空指针
        if (!singlePost.isNull("x_metadata")) {
            JSONObject metaObj = singlePost.getJSONObject("x_metadata");
            String wpGpId;
            // 3. 兼容WordPress meta字段数组格式的情况
            Object idVal = metaObj.get("wp_GP_ID");
            if (idVal instanceof JSONArray) {
                wpGpId = ((JSONArray) idVal).getString(0);
            } else {
                wpGpId = idVal.toString();
            }
            // 此处对wpGpId做后续业务处理即可
            System.out.println("解析得到wp_GP_ID:" + wpGpId);
        }
    }
}

排错提示

  • 若提示找不到x_metadata键,可先执行System.out.println(singlePost.keySet())打印单条对象下的所有键,确认字段实际层级,部分站点自定义字段会放在meta键下而非顶层
  • 所有嵌套取值前都建议加isNull()判断,避免接口返回字段缺失时程序崩溃
  • 如果接口返回多条内容,把直接取索引0的逻辑换成循环遍历postList即可

内容的提问来源于stack exchange,提问作者KingSolomon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:45:35