JSONデータを扱うためのJSONオブジェクト
JSONとは
プログラミング初心者の方は、まだ「JSONって何?」って方もいるかも知れませんね。
JSON(JavaScriptObjectNotation)とは、データを記録するために決められた形式の一つです。アプリケーション間でデータをやり取りするときに、データの記録の方法が作った人によってまちまちだったら、一つずつ確認をしないといけないので大変です。というわけで、みんな、この形式でという感じで決めてそれを伝えているわけですね。
JSONの他にも、よく使われるものではCSV形式やXMLなどがあります。
JSON形式の構造
JSON形式は、JavaScriptのオブジェクトリテラルと配列リテラルを組み合わせた形がベースとなっていますが、以下の2点の違いがあるので注意が必要です。
GAS(JavaScript)オブジェクトの場合は、プロパティは囲まなかったり、値はシングルクォーテーションでも良かったりしますが、JSONはダブルクォーテーションで囲う必要があるので注意してください。
オブジェクトリテラルと配列リテラルが分からないかたは以下の記事も参考にしてください。
それでは、JSON形式のデータのサンプルで確認していきましょう。
[
{"name" : "ひらちん", "age" : 30, "like" : ["game","basketball","eat"] },
{"name" : "ひらこ", "age" : 28, "like" : ["nail","cooking"] }
]
このように、全体を[ ]カギ括弧で括って、中身はオブジェクトの書き方になります。前述の通り、プロパティの名前もダブルクォーテーションで囲うのを忘れないようにしてください。値には配列も利用出来ます。
JSONオブジェクト
JSON形式のデータは文字列なので、スクリプト内で利用するには、オブジェクトに変換する必要があります。JSONオブジェクトを使うことでJSON形式の文字列をオブジェクトに変換することが可能です。
JSONオブジェクトのメンバーは次です。
分類 | メンバー | 説明 |
---|---|---|
メソッド | JSON.parse(str) | JSON形式の文字列strをオブジェクトに変換して返す |
メソッド | JSON.stringify(obj) | objをJSON形式の文字列に変換する |
サンプルで動作を確認してみましょう!
まずは、オブジェクトをJSON形式に変換する「JSON.stringify(obj)」からです。
function test() {
// オブジェクトを用意する
var obj = [
{name : "ひらちん", age : 30, like : ['game','basketball','eat'] },
{name : "ひらこ", age : 28, like : ['nail','cooking'] }
]
// JSON.stringifyでJSON形式の文字列に変換する
var json = JSON.stringify(obj)
// ログに書き出す
Logger.log(json) // [{"name":"ひらちん","age":30,"like":["game","basketball","eat"]},{"name":"ひらこ","age":28,"like":["nail","cooking"]}]
}
ログに出力されたデータは以下のようになります。※見やすいように改行入れてます。
[
{"name":"ひらちん","age":30,"like":["game","basketball","eat"]},
{"name":"ひらこ","age":28,"like":["nail","cooking"]}
]
オブジェクトで渡した時は、プロパティは囲いなし、値はシングルクォーテーションで括っていましたが、ログに出力されたデータでは、ダブルクォーテーションになっていますね。
JSON形式に変換されていることが分かると思います。
次に、JSON形式のデータをオブジェクトに変換する「JSON.parse(str)」です。変換した後、データを取り出すところまで見てみましょう。
function test() {
// JSON形式の文字列を用意する
var str = '[{"name":"ひらちん","age":30,"like":["game","basketball","eat"]},{"name":"ひらこ","age":28,"like":["nail","cooking"]}]'
// JSON.stringifyでJSON形式の文字列に変換する
var obj = JSON.parse(str)
// ログに書き出す
Logger.log(obj[0].name) // ひらちん
Logger.log(obj[1].name) // ひらこ
Logger.log(obj[0].like[1]) // basketball
Logger.log(obj[1].age) // 28.0
Logger.log(obj[1].like) // [nail, cooking]
}
はじめに、JSON形式の文字列を用意するところでは、JSON文字列を、文字列で変数に入れるために、全体をシングルクォーテーションで囲っています。
ログに書き出された値で分かるように、文字列がオブジェクトに変換され、オブジェクトの値の取り出し方法で取り出せていることが分かりますね。
オブジェクトの値の取り出し方が分からない方は以下の記事を参考にしてください。
まとめ
JSONオブジェクトを紹介しました。このようにして、外部からJSON形式のデータを受け取った時はオブジェクトに変換してプログラム内で利用します。逆に、データを吐き出す場合には、JSON形式に変換して渡すことも出来ますね。むちゃくちゃ使うと思うのでしっかり覚えてください。
コメント
[…] 【GAS GoogleAppsScript | 基礎コード】JSONデータを扱うためのJSONオブジェクト […]