JSON到Java会产生错误

时间:2015-03-04 12:06:05

标签: java json

我正在尝试将以下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();
    }
}

我得到以下结果。我已经尝试了在Stack Overflow和其他网站上找到的每一个可能的解决方案。

java.lang.String cannot be cast to org.json.simple.JSONArray

1 个答案:

答案 0 :(得分:1)

stdoutstderr的转换是错误的。它们都是String而不是JSONArray。试试这个:

更改:JSONArray out = (JSONArray) jsonObject.get("Stdout");

收件人:String stdout= (String) jsonObject.get("Stdout");

打印String并查看会发生什么。