Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
369
Help us understand the problem. What is going on with this article?
@Morio

【Python入門】JSON形式データの扱い方

More than 3 years have passed since last update.

※こちらの記事は、プロスタ編集部が現在大変人気の高いPythonの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。

参考サイト:【Python入門】JSON形式データの扱い方

【Python入門】JSON形式データの扱い方

Web アプリケーションでデータのやりとりを行う際に、「JSON」という形式でデータをやり取りすることがあります。JSON は C 言語や JAVA などの様々な言語で使われており、もちろん Python でも扱うことができます。今回は、Python で JSON を扱う方法の基礎的な部分について説明します。

目次
1 JSON とは
2 JSON を扱う
2.1 JSON ファイルの読み込み
2.2 JSON の変換
2.3 JSON の書き込み

JSON とは

まずは、JSON というものがどういった形式なのかについて説明します。JSON は「JavaScript Object Notation」の略で、「JavaScript 言語の表記法をベースにしたデータ形式」と言えます。しかし、表記が JavaScript ベースなだけで、それ以外のさまざまな言語で利用できます。JSON では、ある数値と、その数値の名前であるキーのペアをコロンで対にして、それらをコンマで区切り、全体を波かっこで括って表現します。

{
 "book1":{
"title": "Python Beginners",
 "year": 2005 ,
"page": 399
},
"book2":{
 "title": "Python Developers",
 "year": 2006 ,
"page": 650
 }
}

JSON を扱う

それでは、実際に Python で JSON 形式のデータを扱う方法について説明します。

JSON ファイルの読み込み

JSON ファイルを扱うには、まず JSON ファイルからデータを読み込む必要があります。
JSON ファイルを読み込む手順は
(1)JSON ファイルを開く
(2)開いたファイルを JSON として読み込む
の 2 ステップです。具体的には、以下のように記述します。

import json #必ず必要
変数 1 = open(読み込む JSON ファイルのパス , r) #ここが(1)
変数 2 = json.load(変数 1) #ここが(2)

JSON 関連の関数を使うために、初めに json モジュールをインポートする必要があります。忘れないようにしましょう。続いて、JSON ファイルを読み込みファイルとして開きます。これは通常のファイル操作と同じです。そして、読み込んだ JSON ファイルを、load 関数を使って JSON オブジェクトとして保存します。これで JSON の読み込みができました。

JSON の変換

JSON ファイルを load 関数で読み込むと、Python で扱いやすいように辞書型で保存されます。辞書型なら要素の取り出しなどが容易に出来て便利ですが、ときには JSON 形式の文字列として扱いたい場合もあります。その場合は、辞書型から JSON 形式の文字列へ変換しましょう。辞書型から JSON 形式の文字列への変換は dumps 関数を使います。

import json
変数 1 = json.dumps(変数 2) #変数 2 は辞書型
dumps  json モジュールの関数なのでjson モジュールをインポートしてから使います
dumps は辞書型を引数にとりそれを文字列に変換して返す関数です
import json
f = open('test.json', 'r')
json_dict = json.load(f)
print('json_dict:{}'.format(type(json_dict)))
print('-----辞書型から JSON 形式の文字列へ変換-----')
json_str = json.dumps(json_dict)
print('json_str:{}'.format(type(json_str)))

実行結果

json_dict:
—–辞書型から JSON 形式の文字列へ変換—–
json_str:

また、これとは逆に JSON 形式の文字列を辞書型に変換することもできます。変換には jsonモジュールの loads 関数を使います。

import json
ここまでは上記の例と同じなので省略
json_dict2 = json.loads(json_str)
print(json_dict2:{}.format(type(json_dict2)))

実行結果

json_dict:
—–辞書型から JSON 形式の文字列へ変換—–
json_str:
—–JSON 形式の文字列から辞書型へ変換—–
json_dict2:
JSON の書き込み

Python で扱った JSON データはファイルに書き込むことができます。ファイルへの書き込
みは json モジュールの dump 関数を使います。dumps ではないので注意してください。

import json
変数 1 = open(書き込みファイルのパス, w) #書き込むファイルを開く
json.dump(変数 2, 変数 1) #変数 2 は辞書型

dump は書き込みたい辞書型の変数と、書き込み先のファイルを引数に取ります。JSON 形式の文字列を通常のファイル書き込みのように write 関数で書き込むこともできますが、辞書型を書き込みたい場合はこの方法ならいちいち変換しなくても良いのでラクチンです。
それではまとめとして、以下のような json ファイルを読み込み、文字列へ変換した後、もう一度辞書型にして、別の json ファイルに書き込むという一覧の流れを見てみます。

test.json

{
 "book1":{
"title":"Python Beginners",
"year": 2005 ,
"page": 399
},
"book2":{
 "title": "Python Developers",
 "year": 2006 ,
"page": 650
}
}
import json
#JSON ファイルの読み込み
f = open('test.json', 'r')
json_dict = json.load(f)
print('json_dict:{}'.format(type(json_dict)))
#JSON データの変換
print('-----辞書型から JSON 形式の文字列へ変換-----')
json_str = json.dumps(json_dict)
print('json_str:{}'.format(type(json_str)))
print('-----JSON 形式の文字列から辞書型へ変換-----')
json_dict2 = json.loads(json_str)
print('json_dict2:{}'.format(type(json_dict2)))
#JSON データの書き込み
f2 = open('test2.json', 'w')
json.dump(json_dict2, f2)

実行結果

json_dict:
—–辞書型から JSON 形式の文字列へ変換—–
json_str:
—–JSON 形式の文字列から辞書型へ変換—–
json_dict2:
test2.json
{“book2″: {“year”: 2006, “title”: “Python Developers”, “page”: 650}, “book1″: {“year”: 2005,
“title”: “Python Beginners”, “page”: 399}}

369
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Morio
弊社は初心者向けプログラミング情報サイトを運営しています。プロスタで人気の記事をより多くの人に知って、役立たせたい思いで記事の投稿をしています! サイトに興味がある方は、 http://programming-study.com

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
369
Help us understand the problem. What is going on with this article?