端的に言うと、JSON文字列にしたい場合は str ではなく、json.dumps を使えばよいです。以下詳細。 JSONのプロパティ名はダブルクォートで囲まれている必要がある まず、JSONの表記はPythonのリテラルのような柔軟性はないので、Pythonのリテラルが(あるいはJavaScriptのリテラルであっても)必ずしもJSONとして有効ではないということに注意してください。 >>> json.loads('{"a": 123}') # これはOK {'a': 123} >>> json.loads("{'a': 123}") # これはエラー # 略 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1) 上の例ではプロパテ
![str() で文字列にした Python のオブジェクトが json.loads で戻せない](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6bc393cd0b6bd2196935e603c5d031bd6ca6699/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fja%2FImg%2Fapple-touch-icon%402.png%3Fv%3D1cfb10b305ca)