我正在尝试阅读java中的以下JSON
文件。
这是我的 JSON 文件
{
"names": [
{
"no": 1,
"name": "John"
},
{
"no": 2,
"name": "Paul"
}
],
"new_names": [
{
"no": 11,
"name": "John"
},
{
"no": 12,
"name": "Paul"
}
]
}
Java代码:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class ReadFile {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader(
"D://data.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray nameList = (JSONArray) jsonObject.get("names");
System.out.println("\nnames:");
Iterator<String> iterator = nameList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我想打印名称数组,但我收到错误:
java.lang.ClassCastException:org.json.simple.JSONObject不能 在ReadFile.main(ReadFile.java:34)
转换为java.lang.String
答案 0 :(得分:3)
你的JSonArray nameList
里面有JSONObjects,而不是字符串,
您应该将String
替换为JSONObject
,如异常跟踪
Iterator<JSONObject > iterator = nameList.iterator();
while (iterator.hasNext()) {
JSONObject jsonObjct= iterator.next()
System.out.println(jsonObjct.getInt("no"));
System.out.println(jsonObjct.getString("name"));
}
答案 1 :(得分:1)
从JsonObject迭代..
所以你应该改变如下:
Iterator<String> iterator = nameList.iterator();
以下:
Iterator<JSONObject> iterator = nameList.iterator();
使用for循环迭代它,Iterator不适用于JSONArray。
答案 2 :(得分:0)
正是这条线造成了问题:
Iterator<String> iterator = nameList.iterator();
请尝试使用以下内容:
arrLength = nameList.Length()
for (int i = 0; i < arrLength; ++i) {
JSONObject jsonObj = nameList.getJSONObject(i);
System.out.println(jsonObj)
}