文本必须以'{'在Java中解析JSON时出错

时间:2011-08-28 18:17:39

标签: java org.json

我正在使用org.json lib来解析我的JSON字符串。我的json字符串来自输入流。我正在从输入流中读取json字符串并将其传递给JSONObject()构造函数。 但我得到以下例外:

[2011-08-28 23:42:52,235] main INFO - Task(): input = "{\"keyword\":\"xxxx"}" [2011-08-28 23:42:52,238] main ERROR - Task(): Exception: A JSONObject text must begin with '{' at 1 [character 2 line 1]

我想问题是我"中的额外双引号input。 当我使用new JSONObject("{\"keyword\":\"xxxx"}");时,它工作正常。

++++ UPDATE ++++

这是我的json字符串阅读代码:

    try {
        in = new InputStreamReader(new BufferedInputStream(is));

        int c;
        while (true) {
            c = in.read();
            if (c == '\r' || c == '\n')
                break;
            requestLine.append((char) c);
        }

    } catch (Exception e) {
        logger.error("Task(): Exception: "+e.getMessage());
    }
    input = requestLine.toString();
    //input = "{\"keyword\":\"xxxx\"}"; //working fine
    logger.info("Task(): input = "+input);
    try{
        org.json.JSONObject json = new org.json.JSONObject(input);      
        keyword = json.getString("keyword");
    }catch(Exception e) {
        logger.error("Task(): Exception: "+e.getMessage());
    }


    logger.info("Task(): keyword = "+keyword);

1 个答案:

答案 0 :(得分:1)

我通过消除前导和尾随引号来解决这个问题 input = input.replaceAll("^\"|\"$", "");