我正在使用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);
答案 0 :(得分:1)
我通过消除前导和尾随引号来解决这个问题
input = input.replaceAll("^\"|\"$", "");