【GAS GoogleAppsScript | 基礎コード】JSONデータを扱うためのJSONオブジェクト

スポンサーリンク

JSONデータを扱うためのJSONオブジェクト

JSONとは

プログラミング初心者の方は、まだ「JSONって何?」って方もいるかも知れませんね。

JSON(JavaScriptObjectNotation)とは、データを記録するために決められた形式の一つです。アプリケーション間でデータをやり取りするときに、データの記録の方法が作った人によってまちまちだったら、一つずつ確認をしないといけないので大変です。というわけで、みんな、この形式でという感じで決めてそれを伝えているわけですね。

JSONの他にも、よく使われるものではCSV形式やXMLなどがあります。

JSON形式の構造

JSON形式は、JavaScriptのオブジェクトリテラルと配列リテラルを組み合わせた形がベースとなっていますが、以下の2点の違いがあるので注意が必要です。

  • プロパティ名は「ダブルクォーテーション」で囲む
  • 文字列は「ダブルクォーテーション」で囲む

GAS(JavaScript)オブジェクトの場合は、プロパティは囲まなかったり、値はシングルクォーテーションでも良かったりしますが、JSONはダブルクォーテーションで囲う必要があるので注意してください。

オブジェクトリテラルと配列リテラルが分からないかたは以下の記事も参考にしてください。

【GAS GoogleAppsScript | 基礎コード】オブジェクト・プロパティ・メソッド
オブジェクト・プロパティ・メソッド 今回は、"オブジェクト・プロパティ・メソッド"について紹介します! オブジェクト・プロパティ・メソッド GAS記事の始めのところで、プログラ続きを読む
">
【GAS GoogleAppsScript | 基礎コード】オブジェクト・プロパティ・メソッド
オブジェクト・プロパティ・メソッド 今回は、"オブジェクト・プロパティ・メソッド"について紹介します! オブジェクト・プロパティ・メソッド GAS記事の始めのところで、プログラ続きを読む

それでは、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文字列を、文字列で変数に入れるために、全体をシングルクォーテーションで囲っています。

ログに書き出された値で分かるように、文字列がオブジェクトに変換され、オブジェクトの値の取り出し方法で取り出せていることが分かりますね。

オブジェクトの値の取り出し方が分からない方は以下の記事を参考にしてください。

https://hirachin.com/post-3364/

まとめ

JSONオブジェクトを紹介しました。このようにして、外部からJSON形式のデータを受け取った時はオブジェクトに変換してプログラム内で利用します。逆に、データを吐き出す場合には、JSON形式に変換して渡すことも出来ますね。むちゃくちゃ使うと思うのでしっかり覚えてください。