10

Python 3 で json.loads を使用すると、次のようなエラーが発生します。

try:
  data = json.loads(string)
except ValueError as err:
  print(err)

次のような役立つメッセージが表示されます。

Expecting ',' delimiter: line 12 column 12 (char 271)

問題を引き起こしている正確な場所とともに、これをユーザーに表示できるようにしたいと思います(ユーザーが作成したJSONを読んでいます)。行と列を取り出すにはどうすればよいですか?

エラーで正規表現を使用することもできますが、このメッセージが国際化されているかどうかがわからず、Python のさまざまなバージョンで変更される可能性があるため、それは悪い考えのように感じます。より良い方法はありますか?

4

3 に答える 3

5

simplejsonライブラリを使用すると、十分に修飾された が得られますJSONDecodeError

class JSONDecodeError(ValueError):
   """Subclass of ValueError with the following additional properties:

   msg: The unformatted error message
   doc: The JSON document being parsed
   pos: The start index of doc where parsing failed
   end: The end index of doc where parsing failed (may be None)
   lineno: The line corresponding to pos
   colno: The column corresponding to pos
   endlineno: The line corresponding to end (may be None)
   endcolno: The column corresponding to end (may be None)

   """

うまくいけば、これはすぐに stdlib にマージされます。

于 2013-10-23T14:10:13.450 に答える
1

json オブジェクトが小さい場合は、Json オブジェクトをここに貼り付けます http://jsonlint.com/ json が壊れる場所を示します。

于 2013-10-23T10:15:54.463 に答える