3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonでjsonを扱う

Last updated at Posted at 2021-08-31

Pythonでjsonは扱えない?

そもそもPythonにJSON型はない。
なのでPythonでJSON形式の文字列を送信したり、受信したりする時、双方で型を合わせる必要がある。

そもそもJSONとは

JSON (JavaScript Object Notation) は、 RFC 7159 (RFC 4627 を obsolete) と ECMA-404 によって定義された軽量のデータ交換用のフォーマット

データファイルの書き方のテンプレみたいなもんやと思っとけばおk

型を合わせる

前述したようにPythonにはJSON型は無く、代わりに辞書型がある。
辞書型は「’(シングルクォーテーション」でも「”(ダブルクォーテーション)」でもどちらでも柔軟に書けるが、JSONは基本的に 「”(ダブルクォーテーション)」 である必要がある。

書き換えにはjsonをimportして使えばおk

import json

実際の使用例はこんな感じ

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'

//シングルコーテーションがダブルコーテーションに、Noneがnullに()が[]になっている。

>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'

ここで使われているjson.dumpsはデータをJSON形式にエンコードすることのできる関数

  • エンコードとはデータを別の型に変換すること
    • json.dumps
  • デコードとはエンコードされた型を元に戻すこと
    • json.loads

jsonライブラリでは、loads関数がデコード、dumps関数がエンコードとなっている。
一旦json.dumpsだけやる

PythonからPOSTする時はこんな感じになる

import requests
import json

# POST先URL
url = "POST送信するURL"

# JSON形式のデータ
jsonData = {
    "col1": "val1",
    "col2": "val2"
}    

# POST送信
response = requests.post(
    url,
    json = json.dumps(jsonData)     #jsonはなくても送信可能
    )

resDatas = response.json()

POST時に「json = 」とすることで、requestsが自動的にContentsTypeをjsonとして送信してくれる。
json.dumpsしている場合、jsonは省略可能。分かりやすさのためには、明示的に記載した方が良いとは思う。

デコードも知りたければ下記リンクより

引用、参考

https://max999blog.com/python-requests-get-post-json-data/

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?