JSONとは、データ構造を記述するフォーマットの一種です。
CSV等とは異なり、階層構造を記述することができます。
階層構造を表現できるフォーマットとしてはXMLも挙げられますが、JSONフォーマットはXMLよりも簡易的に記述できる、JavaScriptとの親和性が高い、といった特徴があります。
電文でのデータ通信で多く使われる印象があります。
以下では、JSONについて、フォーマットの簡単な説明と、JSONの生成・読込を行う簡単なサンプルコードを取り上げます。
【JSONのフォーマットの簡単な説明】
■データの開始と終了
開始は”{“、終了は”}”で示されます。
■データの構造
以下のように、変数名と値を”:”で区切って表記します。
変数名はダブルクォーテーションで囲います。
(値については後述します)
1 |
{ "height" : 170 } |
変数名と値のペアが複数ある場合は、ペアを”,”で区切って表記します。
1 |
{ "height" : 170, "weight" : 58.8 } |
人に読ませることを意識する場合、以下のように改行を入れてわかりやすくすることが多いです。
1 2 3 4 |
{ "height" : 170, "weight" : 58.8 } |
■値の種類
JSONでは以下の値を使用することができます。
・数値
数値を記述することで、数値としてみなされます。
1 2 |
{ "height" : 170 } { "weight" : 58.8 } |
・文字列
ダブルクォーテーションで囲うことで、文字列としてみなされます。
1 |
{ "str" : "hoge" } |
・true/false
trueと記述することで、真としてみなされます。
falseと記述することで、偽としてみなされます。
1 2 |
{ "flag1" : true } { "flag2" : false } |
・null
nullと記述することで、nullとしてみなされます。
1 |
{ "flag3" : null } |
・オブジェクト
“{“と”}”で囲うことで、オブジェクトとしてみなされます。
これにより、階層構造の記述が可能になります。
1 2 3 4 5 6 |
{ "name": { "firstName":"miku", "lastName":"hatsune" } } |
・配列
“[“と”]”で囲うことで、配列としてみなされます。
1 |
{"numList": [ 1, 2, 3 ]} |
■文字コード
文字コードはUTF-8(BOM無し)を使用します。
■その他詳細
(RFC8259)がJSONの正式な仕様となりますので、こちらをご参照ください。
【JSONの生成・読込を行うサンプルコード】
ここでは、JavaScript(Node.js)でのサンプルコードを提示します。
以下のように、JSONの生成・読込を行うための機能が用意されており、それを利用することで容易に生成・読込が可能になります。
■生成のサンプル
・コード(stringify.js)
1 2 3 4 5 6 7 8 9 |
let worker = { skill: "singing", name: { firstName: "miku", lastName : "hatsune" } }; let json = JSON.stringify(worker) console.log(json); |
・実行結果
1 2 3 4 |
C:\tmp>node stringify.js {"skill":"singing","name":{"firstName":"miku","lastName":"hatsune"}} C:\tmp> |
■読込のサンプル
・コード(parse.js)
1 2 3 4 5 |
let json = '{"skill":"singing","name":{"firstName":"miku","lastName":"hatsune"}}'; let worker = JSON.parse(json); console.log("skill: " + worker.skill); console.log("firstName: " + worker.name.firstName); console.log("lastName: " + worker.name.lastName); |
・実行結果
1 2 3 4 5 6 |
C:\tmp>node parse.js skill: singing firstName: miku lastName: hatsune C:\tmp> |
いかがでしたでしょうか。
JSONは、JavaScriptを使う場合はもちろんのこと、他システムとのやりとりでも使うことが少なくないので、使う言語によらず学んでおいて損はないと思います。
コメント