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

使用JSON Simple读取JSON文件时获取字符串'da'返回Null的问题求助

问题原因及解决办法

我仔细梳理了你的问题和对应的JSON结构,问题核心出在字段的嵌套层级上——你要获取的da字段并不是直接存在于JSON的根对象中,而是嵌套在data数组的每一个子对象里。如果直接从根JSONObject调用get("da"),自然会返回null,因为根对象里根本没有这个键。

先给你展示下这个JSON的核心结构:

{
  "data": [
    {
      "da": "2024-05-20",
      "dm": "05",
      "dy": "2024",
      // 其他关联字段...
    },
    // 更多数组元素...
  ]
}

解决步骤

你需要先拿到data数组,再从数组的子对象里提取da字段,用JSON Simple实现的代码示例如下:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.FileReader;
import java.io.IOException;

public class JsonHandler {
    public static void main(String[] args) {
        JSONParser parser = new JSONParser();
        try {
            // 解析JSON文件得到根对象
            JSONObject rootObj = (JSONObject) parser.parse(new FileReader("你的JSON文件路径"));
            
            // 获取嵌套的data数组
            JSONArray dataArray = (JSONArray) rootObj.get("data");
            
            // 遍历数组,逐个获取每个元素的da字段
            for (Object itemObj : dataArray) {
                JSONObject item = (JSONObject) itemObj;
                String daValue = (String) item.get("da");
                System.out.println("da字段值:" + daValue);
            }

            // 如果你只需要数组第一个元素的da值
            if (!dataArray.isEmpty()) {
                JSONObject firstItem = (JSONObject) dataArray.get(0);
                String firstDa = (String) firstItem.get("da");
                System.out.println("第一个da值:" + firstDa);
            }

        } catch (IOException | ParseException e) {
            e.printStackTrace();
        }
    }
}

额外注意事项

  • 确保类型转换正确:rootObj.get("data")返回的是Object类型,必须强制转换成JSONArray;同理数组里的元素要转成JSONObject才能获取内部字段。
  • 检查字段拼写:确认你代码里写的是小写的"da",避免大小写不匹配的问题(不过根据你的描述,这个应该不是问题所在)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:05:35