🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSON

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

Python 3.x

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

Q&A

解決済

1回答

794閲覧

Pythonでjson形式を

AMK

総合スコア765

JSON

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

Python 3.x

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

0グッド

0クリップ

投稿2019/12/29 17:33

環境

AWS
Amazon/linux
東京サーバー
cloud9で実行
Python3.6

やりたい事

Json

1{ 2 "status": 0, 3 "data": [ 4 { 5 "symbol": "JPY", 6 "amount": "53727", 7 "available": "53727", 8 "conversionRate": "1" 9 }, 10 { 11 "symbol": "BTC", 12 "amount": "0", 13 "available": "0", 14 "conversionRate": "790862" 15 }, 16 { 17 "symbol": "ETH", 18 "amount": "0", 19 "available": "0", 20 "conversionRate": "14180" 21 }, 22 { 23 "symbol": "BCH", 24 "amount": "0.0005905", 25 "available": "0.0005905", 26 "conversionRate": "22288" 27 }, 28 { 29 "symbol": "LTC", 30 "amount": "0", 31 "available": "0", 32 "conversionRate": "4529" 33 }, 34 { 35 "symbol": "XRP", 36 "amount": "0.449977", 37 "available": "0.449977", 38 "conversionRate": "20.444" 39 }, 40 { 41 "symbol": "XEM", 42 "amount": "0", 43 "available": "0", 44 "conversionRate": "3.409" 45 { 46 "symbol": "XLM", 47 "amount": "0", 48 "available": "0", 49 "conversionRate": "4.835" 50 } 51 ], 52 "responsetime": "2019-12-29T17:25:19Z" 53} 54```上記のjsonから辞書型で 55balance["JPY"]["amount"]のようにデータを取り出したい 56 57 58### 困っていること 59知識不足で申し訳ないです。 60現状のデータ自体がJson型なのか 61辞書型なのか?がまず解っていません。 62 63見分け方はありますか?? 64 65自分なりには色々と調べて下記のコードを実行して辞書型ならKeyの一覧が返ってくるはずと思い、実行してみましたが返ってこなかったのでJSON型だと思っています・・・ 66```python 67print(balance.keys())

balance["JPY"]["amount"]でデータを取り出す方法
JSONから辞書型に変換する方法と取り出し方を知りたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

キー "data" 以下にリストで通貨別のデータが入っているようですが、"JPY" はキー "symbol" の値です。

まず、リストからキー "symbol" の値が "JPY" の要素を探す必要があります。

Pythonにおけるlistのfind的なやつ - Qiita

jpy = next(filter(lambda x: x["symbol"] == "JPY", balance["data"]))

要素を見つけられたら、キー "amount" の値を参照します。

jpy["amount"]

コード

python

1import json 2 3with open("sample.json") as f: 4 balance = json.load(f) 5 6 7jpy = next(filter(lambda x: x["symbol"] == "JPY", balance["data"])) 8print(jpy["amount"]) # 53727

追記

上記処理を関数化して利用できるようにすればいいと思います。

python

1import json 2 3with open("sample.json") as f: 4 balance = json.load(f) 5 6 7def get_data(balance, symbol): 8 return next(filter(lambda x: x["symbol"] == symbol, balance["data"])) 9 10 11jpy = get_data(balance, "JPY") 12print(jpy) 13print(jpy["amount"]) # 53727 14 15 16btc = get_data(balance, "BTC") 17print(btc) 18print(btc["amount"]) # 53727

投稿2019/12/29 18:34

編集2019/12/30 06:38
tiitoi

総合スコア21956

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

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

AMK

2019/12/29 23:26

回答ありがとうございます! BTCとかの場合もあるので出来れば、symbolも変更出来るようになると嬉しいです わがまま言ってスミマセン
tiitoi

2019/12/30 06:39

追記しました。 変更したい部分を変数にすればよいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問