使用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
相关产品推荐
相关产品推荐

