1
我使用org.json lib来解析我的JSON字符串。我的json字符串来自输入流。我从输入流中读取json字符串并将其传递给JSONObject()构造函数。 但我发现了以下异常:文本必须以'{'错误解析Java中的JSON开头
[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);
结尾的引号解决了这个*你如何阅读和记录字符串?显示读取输入的代码和导致INFO输出的代码。 – delnan
嗨@delnan,我已更新我的问题,请检查一次。 –
嗯,我看到是什么导致了这个异常,但你已经猜到了。你的字符串包含不应该在那里的引号,并且除非'requestLine'是某种类型在它收集的字符串周围奇迹般地加上了引号,否则这些引号是谁给你的程序输入的错误。如果引号确实在输入中,则输入是无效的JSON,并且您的代码无法执行任何操作(除非试图绕过它)。 – delnan