JSON.stringifyを使ってJSONフォーマットのコントロール

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

JSONフォーマットが便利すぎて日々鼻血が出そうになります。
 

テキストデータとしては、csvやxmlなどが使われる場合が多いのですが、jsonフォーマットはとにかく利便性が高く、使いやすい為、Web-APIなどで利用しているサイトも増えてきました。
 

ただし、それぞれのフォーマットにはそれなりのメリットもあるので、そうした点を理解した上でjsonを使う判断をしないと、結果オーライにならないケースもあるようですよ。
 

元々Javascriptで扱うデータフォーマットだったJSONですが、key=valueというシンプル構成がWEBクエリや、連想配列と合わせて使う時に違和感なく使えることから、使いやすいんだと思います。
 

そんなjsonフォーマットは、文字列の状態と連想配列の状態をそれぞれ変換する時に、JSON関数のparseとstringifyメソッドを使いますが、stringifyメソッドで文字列変換する際に、データのコントロールができるので、より便利に使える方法を説明します。

それぞれのフォーマット毎のメリットを考える

csv

エクセルから出力できる2軸のシンプルフォーマット。
テキストフォーマットで扱う中で最もデータ容量が少なくなるので、サーバーにおけるデータログなどで使う場合も多いでしょう。
 

xml

namespaceを使ったセキュアなデータ管理や
HTMLからの上位バージョンとしてDOM構造という扱いはWEBデータとしては優位点でしょう。
 

Androidの基本設定やRSSなどのデータとして使われていますが、金融庁のXBRLフォーマットもXML形式で構成されています。
 

それぞれのタグに対して属性が持てる点から、情報量の多いデータをコンパクトに格納できますが、扱い方も複雑であり、データ容量も最も大きくなってしまいます。

json

javascriptの連想配列をそのまま文字列化したものがjsonフォーマットですが、javascriptのObjectとの違いはfunctionが持てないという点ですかね。
 

連想配列と文字列を変換するタイミングについて考える

文字列にするのは、データとしてファイルやDBに書き出す時に、文字列にする必要があります。
 

そんな場合は、迷わず

 

これで、ObjectからStringに切り替わり、URLクエリで送付したり、テキストに書き出す事が可能になります。
 

逆に、受け取ったJSONフォーマットを連想配列に変換したければ、

 

これだけでデータフォーマットにエラーがなければ、すんなり連想配列化されます。

JSON.stringifyを上手に扱う方法

上記のJSONデータを文字列化する操作を下記の様にするだけで、出力文字列が整形されます。
 

 

“{
a : 1,
b : 2,
c : 3
}”

 

第3要素の” “部分は、インデントを指定していますが、第2要素の null って中のデータを何もせずにスルーしている状態です。
 

ここに関数を書く事でデータコントロールが可能になります。
 

例えば、データのvalue値を全て数値から文字列に変換するには、以下の様に書きます。
 

 

“{
“a”: “1”,
“b”: “2”,
“c”: “3”
}”

 

keyとvalueを理解でしていれば、値をコントロールする事が容易にできる事がわかると思います。
 

ちなみに、このfunctionでは、keyが3つ存在するのですが、実質4回のloopが発生してしまいます。
 

大元の {} 部分のObject要素もここに送られてくるので、keyがない場合または、valueが”object”の場合は、そのままvalueを返すのがセオリーの様です。
 

この方式を使うと決まった階層やkey値に対してのデータフォーマットのコントロールや、受け取ったデータの合計値を求めたりすることも可能になります。
 

他にも任意の文字列変更や、データ削除などを行なって整形することもできることを考えると、受け取ったデータがエラーになる確率を下げる事ができそうですね。
 

ちなみに、僕が以前書いたブログで、自力で作ったjsonデータの文字列化ツールですが、こちらは、functionも格納できるようになるので、とても便利ですよ・・・という宣伝
 

-->

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です