1

JSON-Simpleを使用してTwitterからJSONブロックを解析しています。私は例外に遭遇しました:

Exception in thread "main" Unexpected token COLON(:) at position 27
...stack trace...

JavaScriptがJSONを解析する方法に特殊性があるため(JSONJ-Pはそれをパディングして受け取る必要があると思います)、SOで似たようなものを見てきましたが、私は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"}

2つのことが私を襲います。

  1. バッファリングされたリーダーで読み取ったばかりの行を出力しますが{、ブロックの最初にはaがなく、最後にはありません。これは深刻な問題のようです。
  2. 27位で読んだ文字はコロンではなくr

したがって、バッファリングされたリーダーが私のものを食べている{か、パーサーが正しく解析していません。どちらが問題であるかを確認して修正するにはどうすればよいですか?

nb while(buff.read()!=-1)(行の終わりをチェックするために)印刷および解析行があり、「正規表現」(if(!line.contains(DELETE_REGEX))(無効なjsonをチェックするため)をチェックする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()の最初を食べていたため、jsonとして解析できませんでした。charに戻ってwhile((line=buff.readLine())!=null)EOR を確認しますが、うまくいきません。

于 2012-10-01T08:42:34.123 に答える