- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
1小时前关闭。
Improve this question
我想从一个json文件中读取如下内容:
{
"name": "Luis Lopez",
"name": "Armando Guascogne Ursular",
"name": "Brancar Diego"
}
从json文件中读取并将名称复制到数组列表中。
public List getName() {
try {
Object obj = parser.parse(new FileReader("mypath\name.json"));
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");
for (int i = 0; i<jsonObject.length();i++){
datasource.add(name);
}
} catch (Exception e) {
e.printStackTrace();
}
return datasource;
}
但它返回给我的是空列表。
1条答案
按热度按时间sqserrrh1#
首先,你的JSON是无效的,因为你使用了相同的键
name
三次,这将在任何情况下只给予你最后一个键,Brancar Diego
作为响应。所以,你必须做两件事:
JSON重构可能如下所示:
换句话说,JSON必须包含唯一的元素,在上面的示例中,您将正确定义JSON数组,然后可以对其进行迭代。
之后,您必须相应地调整您的Java代码。
如果您由于某种原因无法更改JSON,则应该使用唯一ID缓存每次迭代,使用这些ID创建新的ArrayList元素,或者仅使用Auto Increment填充它们的键,并在格式化后再次迭代,但这会降低性能、不好的做法以及难以维护,因此我不推荐使用。