java - JSON.simple - 如何正确访问嵌套的 JSON 对象
问题描述
我的 json 文件的示例是
{
"collection": [
{
"trophy-name": {
"text": "swimming",
"text2": "fast swimming"
},
"length": "50m",
"pool": "outside",
"weather": "20"
}
]
}
现在我能够从长度、游泳池和天气中获得价值。但我被困在如何访问嵌套数组嵌套对象trophy-name
上。
我的代码是:
public class main {
public static void main(String[] args) throws FileNotFoundException, IOException, ParseException
{
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); // json path
JSONObject jsonObject = (JSONObject) obj;
JSONArray array = (JSONArray) jsonObject.get("collection");
for (Object number : array )
{
JSONObject testObj = (JSONObject) number;
String pool = (String)testObj.get("pool");
System.out.println(testObj.get("length"));
System.out.println(pool);
System.out.println(testObj.get("weather"));
}
}
}
这是我第一次尝试使用 json 文件,所以我正在尝试使用它,所以代码不是很好。
我可能必须创建新对象
JSONObject trophyObj = (JSONObject) jsonObject.get("trophy-name");
然后从那里我应该能够得到这个文本?
String troph = (String) trophyObj.get("text");
即使我是正确的,我也不确定如何将它实现到循环中,或者是否有更好的方法来执行循环?不要介意以不同的方式重做代码,任何建议表示赞赏。
解决方案
是的,你是对的,只需提取JSONObject
循环内的内容,然后获取所需的字段。
public class main {
public static void main(String[] args) throws FileNotFoundException, IOException, ParseException
{
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("...")); // json path
JSONObject jsonObject = (JSONObject) obj;
JSONArray array = (JSONArray) jsonObject.get("collection");
for (Object number : array )
{
JSONObject testObj = (JSONObject) number;
String pool = (String)testObj.get("pool");
System.out.println(testObj.get("length"));
System.out.println(pool);
System.out.println(testObj.get("weather"));
JSONObject trophyObj = (JSONObject) testObj.get("trophy-name");
System.out.println((String)trophyObj.get("text"));
System.out.println((String)trophyObj.get("text2"));
}
}
}
推荐阅读
- java - Shortest way of sorting and comparing two lists
- kubernetes - CrashLoopBackOff - 后退重启失败的容器
- android - android -constraintLayout 如何将高度添加到粘性工具栏?
- vb.net - 如何在 VB.net MS 图表中将复选框添加到图例中启用\禁用系列
- json - flutter : 嵌套的 json 解析列表
- javascript - 如何使用“saveAs”在服务器上直接下载pdf
- c# - 值不能为空。参数名称:val 在 VS Monogame 项目中
- javascript - 如何在angular js中设置$interval 24小时
- spring-boot - 如何验证rest服务的json请求
- c# - 为什么 Paralle.for 松得这么厉害