simplejson.loads()
以下を正常に解析することに興味があります。
{foo:3}
「プロパティ名を期待する」というJSONDecodeError
言葉を投げかけますが、実際には「プロパティ名を二重引用符で囲む必要があります」と言っています。これは私の使用例にとっては厄介であり、あまり厳密でない動作を好みます。私はドキュメントを読みましたが、独自のデコーダー クラスを作成する以外に、この動作を変更する明らかなものは見当たりません。
simplejson.loads()
以下を正常に解析することに興味があります。
{foo:3}
「プロパティ名を期待する」というJSONDecodeError
言葉を投げかけますが、実際には「プロパティ名を二重引用符で囲む必要があります」と言っています。これは私の使用例にとっては厄介であり、あまり厳密でない動作を好みます。私はドキュメントを読みましたが、独自のデコーダー クラスを作成する以外に、この動作を変更する明らかなものは見当たりません。
JSON のスーパーセットであるため、YAML (>=1.2) を使用できます。
>>> import yaml
>>> s = '{foo: 8}'
>>> yaml.load(s)
{'foo': 8}
いいえ、これは不可能です。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}'