JSONジェイソンモジュール

本ページには広告が含まれています。

JSON文字列とオブジェクトの相互変換を行います。

構文
  1. object = JSON.Parse( text, reviver )
  2. string = JSON.Stringify( value, replacer, space )
引数
text 必須
JSONとして解析する文字列
value 必須
JSON文字列に変換する値
reviver 省略可
使用不可
replacer 省略可
使用不可
space 省略可
出力するJSON文字列に空白を挿入するための文字列もしくは数値
戻り値
Parse
JSON文字列をオブジェクトに変換
Stringify
オブジェクトをJSON文字列に変換

プログラム

UWSC

JSONとは

JSON(JavaScriptジャヴァスクリプト Objectオブジェクト Notationノーテーション)は、データを構造化して表現するための軽量なフォーマットです。おもにWebアプリケーションでデータの送受信に利用されています。

JSONの特徴

JSONには以下のような特徴があります。

軽量で可読性が高い
CSV形式は表形式のデータをカンマで区切って表現しますがネストされた構造は表現できません。XML形式はタグを使い階層化して複雑なデータも構造化して表現します。JSONはCSVとXMLの両方の特徴を持っていて人間が理解しやすい形式であり、デバッグやデータの確認が容易です。
言語非依存性
JSONはプログラミング言語に依存せず、ほとんどの言語でかんたんに利用することができるライブラリが用意されています。
ネスト構造
オブジェクトや配列をネストして表現できるため、複雑なデータ構造を簡潔に記述できます。

JSONの記法

JSONは以下に示すルールに従って記述します。

  • 全体を{ }で囲みます。
  • データはキーと値のペアとなり、キー:値の形式で記述します。またこのキー名とその値の組み合わせのことをプロパティといいます。
  • キー名は"(ダブルクォーテーション)で囲みます。'(シングルクォーテーション)はエラーとなります。
  • 複数のデータがあるときは,(カンマ)で区切ります。
  • オブジェクトは{ }、配列は[ ]で定義します。
JSON

JSONの構文

JSON文字列からオブジェクトの生成

JSONモジュールのParse関数を使いJSON文字列をオブジェクトに変換します。

UWSC

JSON文字列にはUWSCの特殊文字であるダブルクォーテーションを含むため、複数行文字列の定義を使って代入します。TEXTBLOCKを使わずに書くと以下のようになります。

UWSC

この場合は仮の文字としてシングルクォーテーションで囲み、REPLACE関数 (スクリプト関数)で置換する以下の書き方の方が見やすくなります。

UWSC
プロパティへのアクセス

オブジェクトに変換することでプロパティにアクセスすることができるようになります。オブジェクト.キー名でそのプロパティの値にアクセスすることができます。

UWSC
結果
プレーンテキスト
配列の要素へアクセス

配列のプロパティにはオブジェクト.配列名.Item[添字]でアクセスすることができます。添字は0から始まる整数で、配列の要素数はオブジェクト.配列名.lengthで取得することができます。

UWSC
結果
プレーンテキスト

データ型

JSONで表現するデータ型は以下のものがあり、これらを組み合わせてデータを記述していきます。

文字列
データを"(ダブルクォーテーション)で囲み文字列を指定します。Unicode文字列を文字コードの番号で指定する場合、"\uXXXX"XXXXに文字コード)の形式で指定します。エスケープが必要な文字については特殊文字を参照。(例: "Hello, World!")
数値
数値は10進数の整数、小数、指数表記で指定することかてきます。ダブルクォーテーションで囲むと文字列型となるので注意。(例: 42、3.14)
真偽値
trueまたはfalseを指定することができます。真偽値はすべて小文字で記述します。大文字を含めた場合エラーが発生します。(例: true、false)
ヌル値
値がないことを示すヌル値(null)を指定することができます。項目(キー)が用意されているけど代入する値がないときに使います。真偽値のときと同様、すべて小文字で指定する必要があります。(例: null)
オブジェクト(連想配列)
{ }で囲みます。キーと値のペアを持つプロパティを指定することができます。値にオブジェクトを指定することで入れ子構造にすることができます。(例: {"key": "value"})
配列
1つのキーに対して複数の値を指定することができます。値には文字列、数値、真偽値、ヌル値、オブジェクト、配列を指定することができます。オブジェクトはキーと値のペアであるのに対し、配列は値のみを列挙するときに使います。(例: ["apple", "banana", "cherry"])

特殊文字

特殊文字はJSONの構文中において、特別な意味を持ちます。

例えば"(ダブルクォーテーション)は文字列の開始・終了位置を表すため、文字列中にそのまま記述すると文字列の終わりと認識されてしまいます。また改行やタブはJSONテキストの整形に使われるため文字列として使いたい場合、これらはエスケープ処理をする必要があります。

エスケープが必要な文字は以下の表のとおりです。\(バックスラッシュ)直後のアルファベットは小文字で入力します。大文字の場合エラーが発生します。

エスケープシーケンス 意味
\" ダブルクォーテーション
\\ バックスラッシュ
\/ スラッシュ
\b バックスペース
\f 改ページ(フォームフィード)
\n 行頭復帰(キャリッジリターン)
\r 改行(ラインフィード)
\t タブ
\uXXXX Unicode文字列

Unicode文字列についてはhttps://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFFを参照。

例えば§を入力したい場合、表を見るとU+00A0行7列の位置にあるのでコードは\u00a7となります。

UWSC

json2.js

UWSCの標準関数だけではJSONデータを解析するのは難しいため、外部のライブラリを使うことで簡単に解析できるようにします。json2.jsはJSONデータを扱うためのJavaScriptライブラリでJSON-js/json2.js at master · douglascrockford/JSON-js · GitHubからダウンロードすることができます。

UWSCで直接JavaScriptを扱うことはできないので、ScriptControlというJavaScriptのコードを解釈・実行するオブジェクトを使いjson2.jsの処理を実行します。

参考文献

  1. RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format
  2. RFC 8259: JSON(JavaScript Object Notation)データ交換フォーマット