我正在使用 JSON-Simple 解析来自 Twitter 的 JSON 块。我遇到了一个异常:
Exception in thread "main" Unexpected token COLON(:) at position 27
...stack
trace...
由于 JavaScript 解析 JSON 的方式有一些特殊性,我在 SO 上看到过类似的东西(我认为 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
所以缓冲阅读器正在吃我{
的或者解析器没有正确解析。我如何判断它是什么并解决问题?
nb 我确实有我的打印和解析行while(buff.read()!=-1)
(检查行尾)和一个检查“正则表达式” (if(!line.contains(DELETE_REGEX))
(检查无效 jsons)的 if 语句,这可能是原因吗?这是代码:
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;
我错过了一些无关紧要的东西。