JSON转换为Java会产生错误
我试图将下面的JSON字符串解析为java
{"Stdout":"Hello World\nThis is Sara","Stderr":"exit status 124"}
此字符串是动态的,内容可以与中的不同
{"Stdout":"Hello World\nThis is Sara","Stderr":""}
或
{"Stdout":"","Stderr":"exit status 124"}
我使用的是following tutorial,而不是文件,我在其中添加了字符串
因此,我创建此代码只是为了打印"Stdout"
和"Stderr"
必须说的内容:
public void parsed(String str) {
JSONParser parser=new JSONParser();
try {
Object obj = parser.parse(str);
JSONObject jsonObject = (JSONObject) obj;
JSONArray out = (JSONArray) jsonObject.get("Stdout");
Iterator<String> iterator = out.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// loop array
JSONArray err = (JSONArray) jsonObject.get("Stderr");
Iterator<String> iterator2 = err.iterator();
while (iterator2.hasNext()) {
System.out.println(iterator2.next());
}
} catch (ParseException e) {
e.printStackTrace();
}
}
我得到以下结果。我已经尝试了在堆栈溢出和其他站点上找到的每一种可能的解决方案
java.lang.String cannot be cast to org.json.simple.JSONArray
# 1 楼答案
stdout
和stderr
的转换是错误的。他们都是String
而不是JSONArray
。试试这个:更改:
JSONArray out = (JSONArray) jsonObject.get("Stdout");
致:
String stdout= (String) jsonObject.get("Stdout");
打印那个字符串,看看会发生什么