6

simplejson.loads()以下を正常に解析することに興味があります。

{foo:3}

「プロパティ名を期待する」というJSONDecodeError言葉を投げかけますが、実際には「プロパティ名を二重引用符で囲む必要があります」と言っています。これは私の使用例にとっては厄介であり、あまり厳密でない動作を好みます。私はドキュメントを読みましたが、独自のデコーダー クラスを作成する以外に、この動作を変更する明らかなものは見当たりません。

4

3 に答える 3

10

JSON のスーパーセットであるため、YAML (>=1.2) を使用できます。

>>> import yaml
>>> s = '{foo: 8}'
>>> yaml.load(s)
{'foo': 8}
于 2012-02-01T23:33:57.887 に答える
1

いいえ、これは不可能です。simplejson を使用してそれを正しく解析するには、まずそれを有効な JSON 文字列に変換する必要があります。

入力文字列の形式がどれほど厳密かによって、これは非常に単純または非常に複雑になる可能性があります。

単純なケースとして、キーに文字とアンダースコア (引用符なし) のみ、値として整数のみを持つ JSON オブジェクトが常にある場合は、以下を使用して有効な JSON に変換できます。

import re
your_string = re.sub(r'([a-zA-Z_]+)', r'"\1"', your_string)

例えば:

>>> re.sub(r'([a-zA-Z_]+)', r'"\1"', '{foo:3, bar:4}')
'{"foo":3, "bar":4}'
于 2012-02-01T23:33:48.167 に答える