1

我正在使用 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"}

有两件事让我印象深刻。

  1. 它打印出它刚刚用缓冲读取器读取的行,并且{在块的开头没有它在结尾处的行。这似乎是一个严重的问题。
  2. 我在第 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;

我错过了一些无关紧要的东西。

4

1 回答 1

2

我想我找到了。buff.read()正在吃char每一行的第一行,因此无法将其解析为 json。我会恢复while((line=buff.readLine())!=null)检查 EOR,但这不起作用。

于 2012-10-01T08:42:34.123 回答