質問するログイン新規登録
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

599閲覧

pythonで、jsonデータ読み込み時のエラーの対処

kouji_39

総合スコア164

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/06/25 00:56

0

0

実現したいこと

pythonで、jsonデータ読み込みをしています。
jsonデータの入れ子の構造が、複雑なのかエラーが出ます。
データは、以下を「j3.json」で保存して、コードで読み込むようにしてあります。

jsonデータ

1{'metadata': {'detail': '橋', 2 'parameter': {'id': '37,139'}, 3 'title': '調書'}, 4 'result': [{'調書11': [{'damage_mains': [{'class': '', 5 'construct_type_code': 'S', 6 'damage_level': 'b', 7 'damage_type_value': 'ひびわれ', 8 'element_no': '0101', 9 'material_code': 'C', 10 'part_material_code': 'Mg', 11 'part_material_value': '主桁'}, 12 {'class': '', 13 'construct_type_code': 'S', 14 'damage_level': 'd', 15 'damage_pattern_value': '', 16 'damage_type_value': '剥離・鉄筋露出', 17 'element_no': '0101', 18 'material_code': 'C', 19 'part_material_code': 'Mg', 20 'part_material_value': '主桁'}, 21 {'class': '', 22 'construct_type_code': 'S', 23 'damage_level': 'e', 24 'damage_pattern_value': '', 25 'damage_type_value': '漏水・遊離石灰', 26 'element_no': '0101', 27 'material_code': 'C', 28 'part_material_code': 'Mg', 29 'part_material_value': '主桁'}, 30 {'class': '', 31 'construct_type_code': 'S', 32 'damage_level': 'd', 33 'damage_type_value': 'ひびわれ', 34 'element_no': '0401', 35 'material_code': 'C', 36 'part_material_code': 'Mg', 37 'part_material_value': '主桁'}], 38 'diameter': '1'}, 39 {'damage_mains': [{'class': '', 40 'construct_type_code': 'S', 41 'damage_level': 'a', 42 'damage_type_value': 'ひびわれ', 43 'element_no': '0102', 44 'material_code': 'C', 45 'part_material_code': 'Mg', 46 'part_material_value': '主桁'}, 47 {'class': '', 48 'construct_type_code': 'S', 49 'damage_level': 'a', 50 'damage_type_value': 'NON', 51 'element_no': '0103', 52 'material_code': 'C', 53 'part_material_code': 'Cr', 54 'part_material_value': '横桁'}], 55 'diameter': ''}], 56 'nendo': 2021}], 57 'resultset': {'count': 1, 'is_error': False}}

発生している問題・エラーメッセージ

JSONDecodeError Traceback (most recent call last) <ipython-input-55-d677a3846a27> in <cell line: 1>() 1 with open('/content/j3.json') as f: ----> 2 j = json.load(f) 3 4 pprint(j) 3 frames /usr/lib/python3.10/json/decoder.py in raw_decode(self, s, idx) 351 """ 352 try: --> 353 obj, end = self.scan_once(s, idx) 354 except StopIteration as err: 355 raise JSONDecodeError("Expecting value", s, err.value) from None JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

該当のソースコード

python3

1import json 2from pprint import pprint 3 4with open('/content/j3.json') as f: 5 j = json.load(f) 6 7pprint(j)

試したこと

JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
で、google検索した。データ記入の問題なのか、解決しなかった。

補足情報(FW/ツールのバージョンなど)

googlecolab上で動作

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

かわりにast.literal_evalを使うとよいです。

Python

1import ast 2j = ast.literal_eval(f.read())

投稿2023/06/25 01:06

can110

総合スコア38350

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kouji_39

2023/06/25 01:24

うまく読み込めました。 ありがとうございました。
guest

0

この回答はGPT-4による自動生成回答です

JSONデータの形式が正しくありません。JSONでは、プロパティ名(キー)と文字列値をダブルクォート(")で囲む必要があります。以下のように修正してください。

json

1{ 2 "metadata": { 3 "detail": "橋", 4 "parameter": { 5 "id": "37,139" 6 }, 7 "title": "調書" 8 }, 9 "result": [ 10 { 11 "調書11": [ 12 { 13 "damage_mains": [ 14 { 15 "class": "", 16 "construct_type_code": "S", 17 "damage_level": "b", 18 "damage_type_value": "ひびわれ", 19 "element_no": "0101", 20 "material_code": "C", 21 "part_material_code": "Mg", 22 "part_material_value": "主桁" 23 }, 24 { 25 "class": "", 26 "construct_type_code": "S", 27 "damage_level": "d", 28 "damage_pattern_value": "", 29 "damage_type_value": "剥離・鉄筋露出", 30 "element_no": "0101", 31 "material_code": "C", 32 "part_material_code": "Mg", 33 "part_material_value": "主桁" 34 }, 35 { 36 "class": "", 37 "construct_type_code": "S", 38 "damage_level": "e", 39 "damage_pattern_value": "", 40 "damage_type_value": "漏水・遊離石灰", 41 "element_no": "0101", 42 "material_code": "C", 43 "part_material_code": "Mg", 44 "part_material_value": "主桁" 45 }, 46 { 47 "class": "", 48 "construct_type_code": "S", 49 "damage_level": "d", 50 "damage_type_value": "ひびわれ", 51 "element_no": "0401", 52 "material_code": "C", 53 "part_material_code": "Mg", 54 "part_material_value": "主桁" 55 } 56 ], 57 "diameter": "1" 58 }, 59 { 60 "damage_mains": [ 61 { 62 "class": "", 63 "construct_type_code": "S", 64 "damage_level": "a", 65 "damage_type_value": "ひびわれ", 66 "element_no": "0102", 67 "material_code": "C", 68 "part_material_code": "Mg", 69 "part_material_value": "主桁" 70 }, 71 { 72 "class": "", 73 "construct_type_code": "S", 74 "damage_level": "a", 75 "damage_type_value": "NON", 76 "element_no": "0103", 77 "material_code": "C", 78 "part_material_code": "Cr", 79 "part_material_value": "横桁" 80 } 81 ], 82 "diameter": "" 83 } 84 ], 85 "nendo": 2021 86 } 87 ], 88 "resultset": { 89 "count": 1, 90 "is_error": false 91 } 92}

修正後のJSONデータをj3.jsonに保存し、再度コードを実行してください。

投稿2023/06/25 00:57

teratail-ai

Powered by GPT-4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問