JSONファイルを読み込むには

◆PROCESSING 逆引きリファレンス

 カテゴリー:ファイル操作

JSONファイルを読み込むには

【概要】

PROCESSINGでは単純なテキストファイル以外にも、CSV形式のファイルやJSON形式のファイルを扱うことが可能です。

CSV形式のファイルを扱う方法については「CSVファイルを読み込むには」記事を参照してください。

本記事ではJSON形式のファイルを読み込む方法について紹介したいと思います。

JSON とはJavaScript Object Notationの略で、コンピュータ同士が簡単にデータを交換することを目的に制定されたドキュメントフォーマットのことです。

データ交換用のフォーマットはJSON以外にもたくさんありますが、幅広い言語に対応しており、かつ軽量(簡単)で、人間にもコンピュータにも判読しやすい形式でデータを表現できるため、多くの場面で活用されています。

本記事ではJSONについての詳細な説明は割愛しますが、以下のサイト様などが大変参考となります。JSONについて知りたい方は参考とされると良いでしょう。

JSONは(複数の)JSONオブジェクト、または(複数の)JSON配列として表現されます。JSONオブジェクトとJSON配列を組み合わせることも可能です。

※普通の配列やオブジェクトとJSONで扱う配列やオブジェクトを区別するため、JSONで扱うものをJSON配列、JSONオブジェクトと表現しています。正確な表現ではないことをお断りしておきます。

PROCESSINGには、JSONオブジェクトを読み込む loadJSONObject() 命令と、JSON配列を読み込む loadJSONArray() 命令があります。

読み込んだJSONオブジェクトまたはJSON配列からは、以下の命令で各値を取り出すことが可能です。

命令 用途
1 getJSONArray JSON配列を取り出す
2 getJSONObject JSONオブジェクトを取り出す
3 getString 文字列を取り出す
4 getBoolean 真偽値を取り出す
5 getDouble / getFloat 浮動小数点値を取り出す
6 getInt / getLong 整数値を取り出す
7 getBooleanArray 真偽値の配列を取り出す。JSONArrayでのみ利用可能
8 getDoubleArray / getFloatArray 浮動小数点値の配列を取り出す。JSONArrayでのみ利用可能
9 getIntArray / getLongArray 整数値の配列を取り出す。JSONArrayでのみ利用可能
10 getStringArray 文字列の配列を取り出す。JSONArrayでのみ利用可能

注意としては、対象となるJSONファイルの文字コードは UTF-8 である必要があることです。

UTF-8以外の文字コードでも読み取ることは可能ですが、取得した値が文字化けするなど予期せぬ現象となりますので注意してください。

また対象となるファイルは、デフォルトでは Data フォルダ配下にあることが前提となります。

 

【詳細】

JSON配列を読み込む

JSON配列を読み込むJSONArray values = loadJSONArray( String filename ) ;

values : JSON配列
filename : JSONファイル

filename で指定したJSON形式のファイルを読み取ります。該当ファイルはJSON配列([で始まり]で終わる)である必要があります。

ファイルが見つからない場合や、対象となるファイルがJSON配列で始まっていない場合は例外エラーとなります。

以下は簡単な読み取り例です。

<JSONファイル例>

<出力例>

 

JSON配列から文字列を取り出す

JSON配列から文字列を取得するString value = jarray.getString(int index) ;
String value = jarray.getString(int index, String def ) ;
String[] values = jarray.getStringArray() ;

jarray : JSONArrayインスタンス
value : 文字列
values : 文字列の配列
index : 取り出し位置
def : 取得できない時のデフォルト値

JSON配列から指定した位置にある文字列を取得します。
取り出す値が全て文字列の場合は、getStringArray()で一気に全ての値を文字列配列として取り出すことも可能です。

getString() で文字列を取得する際には、下記サンプルの例2の箇所のように、指定位置に値が存在しない場合のデフォルト値を指定して取り出すことも可能です。

<JSONファイル例>

<出力例>

ただしgetStringArray()で全ての値を取得する場合は、該当JSON配列の中に1つでも文字列以外の値が存在すると例外エラーになるので注意してください。

例えば以下のJSONファイルを、getStringArray()で取得すると例外エラーとなります。

例外となるファイル例1:数値が含まれている

例外となるファイル例2:空の項目が含まれている

 

JSON配列から真偽値を取り出す

JSON配列から真偽値を取得するboolean value = jarray.getBoolean(int index) ;
boolean value = jarray.getBoolean(int index, boolean def ) ;
boolean [] values = jarray.getBooleanArray() ;

jarray : JSONArrayインスタンス
value : 真偽値
values : 真偽値の配列
index : 取り出し位置
def : 取得できない時のデフォルト値

JSON配列から指定した位置にある真偽値を取得します。
取り出す値が全て真偽値の場合は、getBooleanArray()で一気に全ての値を真偽値配列として取り出すことも可能です。

getBoolean() で真偽値を取得する際には、下記サンプルの例2の箇所のように、指定位置に値が存在しない場合のデフォルト値を指定して取り出すことも可能です。

<JSONファイル例>

<出力例>

真偽値は、true か false で定義します。

ただしPROCESSINGの場合は、真偽値を二重引用符で囲ってもOKとみなしてくれるようです。ですので、以下のファイルでも正常に読み込めます。

<JSONファイル例>

ただしgetBooleanArray()で全ての値を取得する場合は、該当JSON配列の中に1つでも真偽値とはみなされない値が存在すると例外エラーになるので注意してください。

例えば以下のJSONファイルを、getBooleanArray()で取得すると例外エラーとなります。

例外となるファイル例1:空文字が含まれている

例外となるファイル例2:数値が含まれている

 

JSONオブジェクトを読み込む

JSONオブジェクトを読み込むJSONObject object = loadJSONObject( String filename ) ;

values : JSONオブジェクト
filename : JSONファイル

filename で指定したJSON形式のファイルを読み取ります。該当ファイルはJSONオブジェクト({で始まり}で終わる)である必要があります。

ファイルが見つからない場合や、対象となるファイルがJSONオブジェクトで始まっていない場合は例外エラーとなります。

以下は簡単な読み取り例です。

<JSONファイル例>

<出力例>

 

JSONオブジェクトから文字列を読み込む

JSONオブジェクトから文字列を取得するString value = jobject.getString(String key) ;
String value = jobject.getString(String key, String def) ;

jobject : JSONObjectインスタンス
value : 取得した文字列
key : KEYとなる値
def: 取得できない場合のデフォルト値

JSONオブジェクトから指定したKEYに合致する文字列を取得します。

getString() で文字列を取得する際には、下記サンプルの例2の箇所のように、指定KEYが存在しない場合のデフォルト値を指定して取り出すことも可能です。

<JSONファイル例>

<出力例>

 

JSONオブジェクトから数値を読み込む

JSONオブジェクトから数値を取得するint value = jobject.getInt(String key) ;
int value = jobject.getInt(String key, int def) ;

jobject : JSONObjectインスタンス
value : 取得した値
key : KEYとなる値
def: 取得できない場合のデフォルト値

JSONオブジェクトから指定したKEYに合致する値を取得します。

getInt() で値を取得する際には、下記サンプルの例2の箇所のように、指定KEYで値が取得できない場合のデフォルト値を指定して取り出すことも可能です。

<JSONファイル例>

<出力例>

 

【関連記事】

 


サンプルプログラム

応用例:

<JSONファイル例>

<出力サンプル>

JSONファイルには、JSONオブジェクトとJSON配列を混在させることも可能です。

サンプルのファイルは、全体をJSONオブジェクトで構成し、そのなかに県名をJSON配列で、人口をJSONオブジェクトで配置しています。

実際のビジネスシーンなどでは、もっと複雑な形式のJSONファイルを扱うこともありますが、紹介した命令を組み合わせれば対応できると思います。

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。