我使用JSON-Simple從twitter解析JSON塊。我碰到一個excepton:爲什麼JSON-Simple解析器在Java中期望冒號?
Exception in thread "main" Unexpected token COLON(:) at position 27
...stack trace...
我已經看到了這樣類似的東西,由於在JavaScript解析JSON的方式有些特殊性(我認爲這JSONJ-P需要接受她補齊)但這不是這種情況,因爲我不在JS!
這裏是我的JSON(消毒):
{"in_reply_to_status_id_str":null,"id_str":"23475129874512857","text":"RT @SanitizedPersonName: SomeTextIveSanitized @SanatizedTwitterHandle SomeMoreText http:\/\/t.co\/sanitized SomeText (MoreText) \/ Text", "restOfTheJson":"Is not Special"}
兩件事情打我。
- 它打印出來,它只是緩衝閱讀器讀取就行了,並不在它的結束塊開始有
{
。這似乎是一個嚴重的問題。 - 我位置27處讀取的字符不是一個冒號,但
r
因此,無論緩衝讀者吃了我的{
或解析器不能正確解析。我如何知道它是什麼並解決問題?
n.b.我的打印和解析行在while(buff.read()!=-1)
(檢查行結束)和if語句中檢查'正則表達式'(if(!line.contains(DELETE_REGEX))
(檢查無效的jsons)是否可能是原因?這裏是代碼:
buff = new BufferedReader(new FileReader(JSON_FILE_NAME+".json"));
while(buff.read() != -1){
line = buff.readLine();
if(!line.contains(DELETE_REGEX)){
System.out.println(line);
myJSON=(JSONObject) parser.parse(line);
myJSONSample.add(myJSON);
}
}
return myJSONSample;
我錯過了一些無關緊要的東西。
消毒版本是否真的重現了問題?我得到了一個不同的錯誤,當我修復它時,我沒有收到任何冒號的投訴。 – Quentin
您的第一個鍵('in_reply_to_status_id_str')中缺少開頭引號。 – lanzz
@Quentin你是否像我一樣使用緩衝閱讀器(或者儘可能接近我給出的內容)?我已經修復了lanzz – Pureferret