1. ホーム
  2. python

[解決済み】Python/Json:二重引用符で囲まれたプロパティ名を期待する

2022-02-10 21:31:07

質問

PythonでJSONオブジェクトをロードする良い方法を見つけようとしています。 私はこのjsonデータを送信します。

{'http://example.org/about': {'http://purl.org/dc/terms/title': [{'type': 'literal', 'value': "Anna's Homepage"}]}}

をバックエンドに送り、そこで文字列として受け取られるようにした。 json.loads(data) をパースしています。

しかし、毎回同じ例外が発生しました。

ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

私はそれをググったが、この解決策以外にうまくいくものはないようだ。 json.loads(json.dumps(data)) 個人的には、json形式でなくてもどんなデータでも受け入れてしまうので、あまり効率的ではないと感じています。

何かご提案があれば、ぜひお願いします。

解決方法は?

これです。

{
    'http://example.org/about': {
        'http://purl.org/dc/terms/title': [
            {'type': 'literal', 'value': "Anna's Homepage"}
        ]
     }
}

はJSONではありません。
これは

{
     "http://example.org/about": {
         "http://purl.org/dc/terms/title": [
             {"type": "literal", "value": "Anna's Homepage"}
          ]
      }
}

はJSONです。

EDITです。
コメント欄には、上記だけでは不十分とのご指摘もありました。
JSON仕様 - RFC7159 は、文字列が引用符で始まり、引用符で終わると述べています。つまり " .
シングルクォート ' はJSONでは意味を持たず、文字列の中でのみ許可されます。