【发布时间】:2020-04-23 19:05:05
【问题描述】:
我一直在搜索,但仍然找不到解决问题的方法。如果已经发布了帖子,请告诉我,以便我可以访问它。我看过类似的帖子,但它们遵循的 JSON 格式与我的不同,所以我想看看是否可行,以及如何使用下面将介绍的 JSON 格式来实现。
基本上,我要做的是获取 JSON 文件中的每个元素,并检索每个元素的键名和值。键和值都是字符串值。这是我希望我的 JSON 代码看起来如何的示例 JSON:
{
"Variable1":"-",
"Variable2":" Test "
}
我正在使用 org.json 库,我想知道这是否可行,如果可行,我该如何实现?我最初尝试做的是将变量放在一个名为“Variables”的数组下,但每次我尝试获取该数组时,它都会给我一个错误,说 JSONObject[“Variables”] 不是 JSONArray。不确定这是由于 JDK 中的问题还是由于我的代码中的问题引起的。当然,这是要在另一个线程中讨论的事情。到目前为止,这就是我所拥有的(FilePath 是一个包含文件完整路径的字符串变量):
String Contents = new String((Files.readAllBytes(Paths.get(FilePath))));
JSONObject JsonFile = new JSONObject(Contents);
JSONArray VariableList = JsonFile.getJSONArray("Variables");
for (Object Item: VariableList) {
Map.Entry Item2 = (Map.Entry)Item;
System.out.println("Key: " + Item2.getKey() + ", Value: " + Item2.getValue());
}
如果 JSON 看起来像这样,上面的代码应该可以工作(是的,我说应该可以,因为它不起作用):
{
"Variables": {
"Variable1":"-",
"Variable2":" Test "
}
}
如果可能,我将如何使用第一个 JSON 格式获取键和值?如果不可能,那么我将如何以另一种方式做到这一点?请记住,键名永远不会相同,因为键和值会根据用户想要的不同而有所不同,这就是为什么能够遍历每个元素并同时获取两者很重要的原因这是关键和价值。
感谢您的时间和精力。
【问题讨论】:
-
"Variables" : { ... }是JSONObject而不是JSONArray。 -
json array使用 [] 表示法,所以应该看起来像"Variables": [ {"Variable": "hi"}, {"Variable": "Batman212369"}, {"Variable": "welcome to SO"} ]所以您需要更改输入或代码