为什么JSON-Simple解析器在Java中不期望冒号?

时间:2012-10-01 08:05:15

标签: json bufferedreader json-simple

我正在使用JSON-Simple从twitter解析JSON块。我遇到了一个异常:

Exception in thread "main" Unexpected token COLON(:) at position 27 {
{1}}

由于JavaScript解析JSON的方式有些特殊,我在SO上看到了类似的东西(我认为JSONJ-P需要接收它填充)但是这不是这里的情况因为我不在JS中!

这是我的JSON(已消毒):

...stack trace...

有两件事让我感到震惊。

  1. 它打印出刚刚用缓冲读取器读取的行,并且在结束时它在块的开头没有{"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"}。这似乎是一个严重的问题。
  2. 我在第27位读到的字符不是冒号,而是{
  3. 因此缓冲读者正在吃我的r或者解析器没有正确解析。我如何判断它是什么并解决问题?

    n.b。我确实在{内有我的打印和解析行(检查行结束)和检查'正则表达式'while(buff.read()!=-1)的if语句(检查无效的jsons)这可能是原因?这是代码:

    (if(!line.contains(DELETE_REGEX))

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

1 个答案:

答案 0 :(得分:2)

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