3

Javaプログラム(jackson)のJSON出力をデコードしようとしていますが、いくつか問題があります。問題の原因は次のスニペットです。

{
    "description": "... lives\uMOVE™ OFFERS ",
}

これが原因ValueError: Invalid \uXXXX escapeです。

これを修正する方法について何かアイデアはありますか?

編集:出力はAvroファイルからのものであり、Avroパッケージはjacksonを使用してレコードをJSONとして出力します。
EDIT2:ソースファイルを調べた後、JSONが手動で作成されている場合があります(申し訳ありませんが、jackson)。

4

5 に答える 5

4

元の文字列はどのように見えるはずですか?\uXXXXはUnicodeエスケープシーケンスであるため、\ uMOVEを単一の文字として解釈しますが、有効なUnicode値ではありません。JSONは常にUnicodeであると想定されているため、元のアプリで文字列を修正する必要があります。

于 2011-07-14T17:31:02.883 に答える
1

\u次のように引用してみてください。

{
    "description": "... lives\\uMOVE™ OFFERS ", 
}
于 2011-07-14T17:36:22.587 に答える
1

基本的に、入力は有効なjsonではありません。

http://www.json.org/の仕様では、文字列のエンコード方法を定義しています。他のアプリケーションからのJSON出力を修正する必要があります。

于 2011-07-14T17:41:42.637 に答える
0

ジャクソンには現在、そのような入力を受け入れることを可能にする構成機能がありません。(それはジャクソンで生成されましたか?)

ストリームパーサーを変更して処理することができます。変更が必要なメソッドへのスタックトレースをたどります。

http://jira.codehaus.org/browse/JACKSONで変更リクエストを送信して、Jacksonを拡張し、そのような機能を提供することができます。ただし、リクエストがどれほど人気が​​あるか、また、これまでにそうなるかどうかはわかりません。実装されました。

于 2011-07-14T18:06:54.560 に答える
0

これは、Avroバージョン<1.6.0の既知のバグです。詳細については、 AVRO-851を参照してください。

于 2011-09-05T06:12:14.257 に答える