0

私は、このユーザーが行っていたことと非常に似たようなことをしています: javascript オブジェクト宣言を Python 辞書にロードしようとしています。ただし、そのユーザーとは異なり、プロパティ名は引用符で囲まれません。

>>> simplejson.loads('{num1: 1383241561141, num2: 1000}')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/lalalal/site-packages/simplejson/__init__.py", line 385, in loads
    return _default_decoder.decode(s)
  File "/Users/lalalal/site-packages/simplejson/decoder.py", line 402, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Users/lalalal/site-packages/simplejson/decoder.py", line 418, in raw_decode
    obj, end = self.scan_once(s, idx)
simplejson.decoder.JSONDecodeError: Expecting property name: line 1 column 1 (char 1)

正しい JSON 表記があれば素晴らしいことです。

>>> simplejson.loads('{"num1": 1383241561141, "num2": 1000}')
{'num1': 1383241561141, 'num2': 1000}

しかし、私はしません。どうすればこれを回避できますか? 多分それは正規表現のような単純なものに帰着しますか?

編集: Martijn が書いたこの正規表現は、中途半端なところにあります。サンプル データの一部で発生する中括弧の後に空白がある場合、機能しません。{ num1: 1383241561141, num2: 1000}'

4

2 に答える 2

0

RSONなどの一部のライブラリは、いわゆる「緩和された」JSON 表記の解析をサポートしています。

実際のキーによっては、セキュリティへの影響を気にしない場合 (外部入力でこれを使用しないでください) eval、機能する辞書も得られる場合があります。

于 2013-11-02T18:20:02.547 に答える