有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

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

    致:String stdout= (String) jsonObject.get("Stdout");

    打印那个字符串,看看会发生什么