質問編集履歴

1

ソースコードとjsonを追記しました。

2022/05/16 15:05

投稿

kouki_prog
kouki_prog

スコア2

test CHANGED
File without changes
test CHANGED
@@ -12,3 +12,81 @@
12
12
 
13
13
  **【質問】**
14
14
  要素があったりなかったりする場合、jsonからの要素の抽出は一つ一つ例外処理を書いていくしかないのでしょうか?
15
+
16
+ **【変更点】**
17
+ ソースコードとjsonを追記しました。
18
+
19
+ json例
20
+ ```json
21
+ response_json =
22
+ {
23
+ "asin": "B0872MYW83",
24
+ "identifiers": [
25
+ {
26
+ "marketplaceId": "A1VC38T7YXB528",
27
+ "identifiers": [
28
+ {
29
+ "identifier": "4902777309934",
30
+ "identifierType": "EAN"
31
+ }
32
+ ]
33
+ }
34
+ ],
35
+   ・・・中略
36
+ "summaries": [
37
+ {
38
+ "marketplaceId": "A1VC38T7YXB528",
39
+ "brandName": "NEXT BODY(\u30cd\u30af\u30b9\u30c8 \u30dc\u30c7\u30a3)",
40
+ "browseNode": "3457072051",
41
+ "itemName": "[Amazon\u9650\u5b9a\u30d6\u30e9\u30f3\u30c9] \u660e\u6cbb \u30b6\u30d0\u30b9(SAVAS) \u30db\u30a8\u30a4\u30d7\u30ed\u30c6\u30a4\u30f3 \u30b3\u30b3\u30a2\u5473\u301051\u98df\u5206\u3011 1,071g NEXT BODY",
42
+ "manufacturer": "\u660e\u6cbb",
43
+ "modelNumber": "2630993",
44
+ "sizeName": "1.071\u30ad\u30ed\u30b0\u30e9\u30e0 (x 1)"
45
+ }
46
+ ],
47
+ "variations": []
48
+ }
49
+ ```
50
+
51
+ プログラム
52
+ ```Python
53
+ json_tmp = json.loads(response_json)
54
+
55
+ try:
56
+ jan = json_tmp.get('identifiers')[0].get('identifiers')[0].get('identifier')
57
+ except (IndexError,AttributeError):
58
+ jan = ''
59
+ try:
60
+ major_rank = json_tmp.get('ranks')[0].get('ranks')[0].get('rank')
61
+ except (IndexError,AttributeError):
62
+ major_rank = ''
63
+ try:
64
+ minor_rank = json_tmp.get('ranks')[0].get('ranks')[1].get('rank')
65
+ except (IndexError,AttributeError):
66
+ minor_rank = ''
67
+ try:
68
+ junre = json_tmp.get('ranks')[0].get('ranks')[0].get('title')
69
+ except (IndexError,AttributeError):
70
+ junre = ''
71
+ try:
72
+ item_name = json_tmp.get('summaries')[0].get('itemName')
73
+ except (IndexError,AttributeError):
74
+ item_name = ''
75
+ try:
76
+ brand_name = json_tmp.get('summaries')[0].get('brandName')
77
+ except (IndexError,AttributeError):
78
+ brand_name = ''
79
+ try:
80
+ manufacturer = json_tmp.get('summaries')[0].get('manufacturer')
81
+ except (IndexError,AttributeError):
82
+ manufacturer = ''
83
+ try:
84
+ model_number = json_tmp.get('summaries')[0].get('modelNumber')
85
+ except (IndexError,AttributeError):
86
+ model_number = ''
87
+ try:
88
+ valiations = json_tmp.get('variations')
89
+ except (IndexError,AttributeError):
90
+ valiations = ''
91
+ ```
92
+