我有一个看起来像这样的JSON对象,
{
"students": [
{
"Name": "Some name",
"Bucket": 4,
"Avoids": ["Foo", "Bar"]
},
{
"Name": "Some other name",
"Bucket": 1,
"Avoids": ["Some String"]
}
]
}
我试图用Java解析这个JSON对象。
这是我的Java代码:
Object obj = parser.parse(new FileReader("./data.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray students = (JSONArray) jsonObject.get("students");
Iterator<JSONObject> studentIterator = students.iterator();
while (studentIterator.hasNext()) {
JSONObject student = (JSONObject) studentIterator.next();
String name = (String) student.get("Name");
double bucketValue;
if (student.get("Bucket") instanceof Long) {
bucketValue = ((Long) student.get("Bucket")).doubleValue();
} else {
bucketValue = (double) student.get("Bucket");
}
JSONArray avoids = (JSONArray) student.get("Avoids");
Iterator<JSONObject> avoidsIterator = avoids.iterator();
while (avoidsIterator.hasNext()) {
String s = (String) avoidsIterator.next();
}
}
直到我尝试解析&#34; Avoids&#34;阵列。这个数组保证只有字符串。但是,当我做的时候
String s = (String) avoidsIterator.next();
我明白了,
error: incompatible types: JSONObject cannot be converted to String
预期。但我确信Avoids数组中的所有值都是字符串。我如何获得所有这些字符串?
还有一些Avoids数组为空的情况。
答案 0 :(得分:1)
将avoidsIterator
更改为字符串的迭代器,而不是JsonObject
的迭代器
Iterator<String> avoidsIterator = avoids.iterator();
while (avoidsIterator.hasNext()) {
String s = avoidsIterator.next();
System.out.println(s);
}
<强>输出强>
Foo
Bar
Some String
答案 1 :(得分:0)
我不明白为什么这不起作用。
conftest