<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>json - プログラミングで遊ブログ</title>
	<atom:link href="https://lemon818.com/tag/json/feed/" rel="self" type="application/rss+xml" />
	<link>https://lemon818.com</link>
	<description>現役システムエンジニアが趣味でプログラミングする自由気ままなブログ</description>
	<lastBuildDate>Wed, 08 Jul 2020 14:06:14 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>	<item>
		<title>【Python】JSONファイルの読み込み、変数へのアクセス方法を解説！</title>
		<link>https://lemon818.com/python-json/</link>
		
		<dc:creator><![CDATA[Take]]></dc:creator>
		<pubDate>Wed, 08 Jul 2020 11:57:40 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[アクセス]]></category>
		<category><![CDATA[ファイル]]></category>
		<category><![CDATA[変数]]></category>
		<category><![CDATA[読み込み]]></category>
		<guid isPermaLink="false">https://lemon818.com/?p=4792</guid>

					<description><![CDATA[どーもTakeです。 この記事では、Python で JSON形式データの取り扱い方法について解説します！ &#160; 具体的には下記項目についてです！ JSONとは？ JSON ファイルの読み込み JSON データ形…]]></description>
										<content:encoded><![CDATA[<p>どーもTakeです。</p>
<p>この記事では、Python で JSON形式データの取り扱い方法について解説します！</p>
<p>&nbsp;</p>
<p>具体的には下記項目についてです！</p>
<div class="sc_frame_wrap blue">
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>JSONとは？</li>
<li>JSON ファイルの読み込み</li>
<li>JSON データ形式の値へのアクセス</li>
<li>JSON ファイルへ書き込み</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p><strong>個人的に<span style="color: #ff0000;">一番難しい</span></strong>と思うところは、「<strong>JSON データ形式の値へのアクセス</strong>」です。</p>
<p>&nbsp;</p>
<p>たとえば、下記のようなJSONデータがあるとします。</p><pre class="crayon-plain-tag">{
  "status": "OK",
  "geocoded_waypoints" : [
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ7cv00DwsDogRAMDACa2m4K8",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ69Pk6jdlyIcRDqM1KDY3Fpg",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJgdL4flSKrYcRnTpP0XQSojM",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJE9on3F3HwoAR9AhGJW_fL-I",
        "types" : [ "locality", "political" ]
     }
  ]
}</pre><p>
<p style="text-align: center;">引用元 : <a href="https://developers.google.com/maps/documentation/directions/intro">Google Directions API 公式ページ</a></p>
<p>&nbsp;</p>
<p>上記は Google Directions API という Google の経路情報を取得できる API から取得できるデータの一部です。</p>
<p>仕事で「これを配列 or データにいれてくれーい」とお客さんからいわれたんですね（イヤー大変でした...）</p>
<p>しかし<span style="color: #0000ff;"><strong>コツをつかめば</strong></span>、どんな複雑なデータ形式でも<strong>必ず取得できるようになります</strong>。</p>
<p>&nbsp;</p>
<p>この記事では、そういった JSON のデータの取り扱いについてご紹介します！！</p>
<p>&nbsp;</p>
<h2>JSONとは？</h2>
<p>JSON (JavaScript Object Notation)とは、JavaScriptのオブジェクトリテラル記法のことです。</p>
<p>&nbsp;</p>
<p>「<span style="color: #ff0000;"><strong>なんのこっちゃ</strong></span>」と思うかもしれませんが、こいつを使えば<span style="color: #0000ff;"><strong>異なるプログラミング言語でもデータのやり取りができる</strong></span>んです！</p>
<p>これが<span style="color: #000000;"><strong>すごく便利な特徴</strong></span>で、あるデータがPythonやPHP、JavaScript で読み込むことも可能です！</p>
<p>&nbsp;</p>
<p>そのため Google やシステムトレードのなどの API で利用されています。</p>
<p>本当に便利なデータ形式なので、知っておいて<span style="color: #0000ff;"><strong>絶対に損がない知識</strong></span>です！</p>
<p>&nbsp;</p>
<h2>JSON ファイルの読み込み</h2>
<p>たとえば、下記内容の 「test.json」という JSON ファイルがあります。</p><pre class="crayon-plain-tag">{
  "status": "OK",
  "geocoded_waypoints" : [
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ7cv00DwsDogRAMDACa2m4K8",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ69Pk6jdlyIcRDqM1KDY3Fpg",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJgdL4flSKrYcRnTpP0XQSojM",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJE9on3F3HwoAR9AhGJW_fL-I",
        "types" : [ "locality", "political" ]
     }
  ]
}</pre><p>
&nbsp;</p>
<p>このJSON ファイルの読み込み方法について、下記のソースコードのようにします。</p><pre class="crayon-plain-tag">import json

json_open = open('test.json', 'r')
json_data = json.load(json_open)

print(json_data)</pre><p>
&nbsp;</p>
<p>上記ソースコードについて順番に説明します。</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">JSON ファイルの読み込み方法</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>json モジュールをインポートします。</li>
<li>open メソッドを用いて、test.json (JSONデータを格納しているファイル)を開き、json_open に格納します。</li>
<li>その json_open を「JSON データ形式として」読み込み、 json_data に格納します。</li>
<li>最後に print メソッドで 「json_data 」を表示させます。</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>出力結果は下記になります。</p><pre class="crayon-plain-tag">{'status': 'OK', 'geocoded_waypoints': [{'geocoder_status': 'OK', 'place_id': 'ChIJ7cv00DwsDogRAMDACa2m4K8', 'types': ['locality', 'political']}, {'geocoder_status': 'OK', 'place_id': 'ChIJ69Pk6jdlyIcRDqM1KDY3Fpg', 'types': ['locality', 'political']}, {'geocoder_status': 'OK', 'place_id': 'ChIJgdL4flSKrYcRnTpP0XQSojM', 'types': ['locality', 'political']}, {'geocoder_status': 'OK', 'place_id': 'ChIJE9on3F3HwoAR9AhGJW_fL-I', 'types': ['locality', 'political']}]}</pre><p>
&nbsp;</p>
<h2>JSON データ形式の値へのアクセス</h2>
<p>たとえば、下記内容の 「test.json」という JSON ファイルがあります。</p><pre class="crayon-plain-tag">{
  "status": "OK",
  "geocoded_waypoints" : [
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ7cv00DwsDogRAMDACa2m4K8",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ69Pk6jdlyIcRDqM1KDY3Fpg",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJgdL4flSKrYcRnTpP0XQSojM",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJE9on3F3HwoAR9AhGJW_fL-I",
        "types" : [ "locality", "political" ]
     }
  ]
}</pre><p>
&nbsp;</p>
<p>上記ファイルを読み込み、各変数にアクセスする方法について説明します。</p>
<p>まずは簡単なところからいきます。</p><pre class="crayon-plain-tag">{
  "status": "OK",
}</pre><p>
&nbsp;</p>
<p>上記の「status」の値である「OK」にアクセスしようとする場合、下記のようにすれば OK です。</p><pre class="crayon-plain-tag">import json

json_open = open('test.json', 'r')
json_data = json.load(json_open)

print(json_data['status'])
print(json_data.get('status'))</pre><p>
&nbsp;</p>
<p>「status」の値である「OK」を取得するためには、</p>
<div class="sc_designlist li fa_angle_o blue">
<ul>
<li>json_data['status']</li>
<li>json_data.get('status')</li>
</ul>
</div>
<p>&nbsp;</p>
<p>のどちらかの値でやれば「OK」という値が表示されます。</p>
<p>&nbsp;</p>
<p>つぎに少しややこしいところをいきます。</p>
<p>下記の「geocoded_waypoints」-&gt; geocoder_status の値「OK」を取得する場合を考えます。</p><pre class="crayon-plain-tag">"geocoded_waypoints" : [
     { 
       "geocoder_status" : "OK", 
       "place_id" : "ChIJ7cv00DwsDogRAMDACa2m4K8", 
       "types" : [ "locality", "political" ] 
    },</pre><p>
&nbsp;</p>
<p>JSON のややこしいところは<span style="color: #ff0000;"><strong>括弧がめっちゃある</strong></span>ところだと思います。</p>
<p>そんなときは下記を参考にしてください。</p>
<div class="sc_frame_wrap block red">
<div class="sc_frame_title">JSON データ形式の括弧について</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid red">
<ol>
<li>[] 鍵括弧　・・・　配列</li>
<li>{} 波括弧　・・・　辞書型変数</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>geocoded_waypoints : [ { ~ } ] とは、geocoded_waypoints にさらに辞書型変数があってそれが配列で構成されていると思ってください。</p>
<p>&nbsp;</p>
<p>ソースコードは下記になります。</p><pre class="crayon-plain-tag">import json

json_open = open('test.json', 'r')
json_data = json.load(json_open)

print(json_data['geocoded_waypoints'][0]['geocoder_status'])
print(json_data.get('geocoded_waypoints')[0].get('geocoder_status'))</pre><p>
&nbsp;</p>
<p>上記の[0]とは配列のインデックスです。</p>
<p>例えば、array[0] = apple、array[1] = banana ・・・という配列がある場合、</p>
[0]番目の値を参照する場合、array[0] とすると思います。</p>
<p>&nbsp;</p>
<p>これと同じ要領で、geocoded_waypoints の[0]番目の値を参照するために</p>
<p>geocoded_waypoints [0]とし、その値の['geocoder_status']にアクセスすれば値がとれるということです。</p>
<p>&nbsp;</p>
<p>つまり下記どちらかの値を指定すれば値が取れます。</p>
<div class="sc_designlist li fa_angle_o blue">
<ul>
<li>json_data['geocoded_waypoints'][0]['geocoder_status']</li>
<li>json_data.get('geocoded_waypoints')[0].get('geocoder_status')</li>
</ul>
</div>
<p>&nbsp;</p>
<h2>JSON ファイルへ書き込み</h2>
<p>JSON ファイルへの書き込み方法について、下記のソースコードで実施します。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">import json

human = {
    "human":
        [
            {"height": "178", "weight": "100"},
            {"height": "169", "weight": "50"}
        ]
}

with open("test.json", "w") as f:
    json.dump(human, f)</pre><p>
&nbsp;</p>
<p>上記は「human」という辞書型変数があり、それを「test.json」に格納した場合の処理を記述しています。</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">JSON ファイルの読み込み方法</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>json モジュールをインポートします。</li>
<li>「human」という辞書型変数を定義します。</li>
<li>open で書き込み先のファイル「test.json」で開きます。</li>
<li>json.dump メソッドをもちいて、辞書型変数「human」をファイル「test.json」に書き込みます。</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h2>最後に</h2>
<p>いかがでしたでしょうか？</p>
<p>世の中には、JSON データ形式で扱われる API が様々なあります。</p>
<p>&nbsp;</p>
<p>この記事を参考にぜひ JSON データ形式をマスターしていただければ幸いです。</p>
<p>ではでは。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
