1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonでJSONを扱う方法

Last updated at Posted at 2024-02-25

目的

 python初心者です。
 webAPIで取得したJSON形式データをpythonで取り扱いたいと思いました。
JSONとは、{}などを用いた記法であり、そのままでは文字列型であることから、
dict型などpythonオブジェクトに変換して取り扱う必要があります。
エンコードとデコードの意味もよくわかっていなかったので調査しました。
https://docs.python.org/ja/3/library/json.html

JSONライブラリ

 最初にimportします。

import json

エンコード方法(pythonオブジェクトをJSON形式に変換)

 pythonオブジェクトをJSON形式に変換するするために.dumpsメソッドを使用します。
 変換されたJSON形式のデータ型はstr型です。
 よく似た名前のメソッドにdumpがありますが、これはデータをJSON形式にエンコードしてファイル保存するメソッドですので、間違えないようします。
dumpssstr型のsかどうかはわかりませんが、s付きはstr変換、sなしはファイル変換と覚えるようにしています。

dumpsSample.py
js = json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
print(type(js))
print(js)

結果

<class 'str'>
[1,2,3,{"4":5,"6":7}]

デコード方法(JSON形式からpythonオブジェクトに変換)

 JSONをデータ形式に変換するために.loadsメソッドを使用します。
 例えば、変換されたリスト形式のデータ型はlist型です。
.dumpsと同様に.loadsloadがありますので、注意します。

loadsSample.py
js = json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
print(type(js))
print(js)

結果

<class 'list'>
['foo', {'bar': ['baz', None, 1.0, 2]}]

変換表(エンコード)

PYTHON JSON
dict object
list, tuple array
str string
int、float と int や float の派生列挙型 number
True true
False false
None null

dumpとdumps(書き込み)

dump: obj を JSON 形式に変換してfp (ファイルオブジェクト) へ流し込みます。

json.dump(obj, fp, *)

dumps: objを JSON 形式の str オブジェクトに変換します。

json.dumps(obj, *)

loadとloads(読み取り)

load: JSON形式のfp (ファイルオブジェクト) を読み取り、pythonオブジェクトに変換します。

json.load(fp, *)

loads: JSON形式の str型インスタンスをpythonオブジェクトに変換します。

json.loads(s, *)

結論

 JSON形式のデータファイルを.loadメソッドでpythonオブジェクトに変換する。
 データインスタンスであれば、.loadsメソッドでpythonオブジェクトに変換する。
 dict型、list型としてpythonで取り扱うことができました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?