質問編集履歴
1
ソースコードとjsonを追記しました。
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
|
+
|