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