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