あるツールに対してデータを送信した時に使ったコードをメモとして残します。
結論(jsonを分解)
JSON.parseを使用する。
JSON.parse( "取得したjson" );
結論(jsonを分解:URLでリクエストした場合)
JSON.parseに加えて、UrlFetchApp.fetch、getContentText()を使用する。
JSON.parse(UrlFetchApp.fetch("リクエストURL").getContentText());
結論(jsonを分解:keyやvalueをそれぞれ取得したい場合)
Object.entries
結論(jsonを作る)
JSON.stringify( data );
具体例
function test() {
//jsonを分解する
var jget ='{"a":"アイウエオ","b":"カキクケコ"}';
var jarr = JSON.parse(jget);
Logger.log(jarr) //{a=アイウエオ, b=カキクケコ}
Logger.log(jarr.a) //アイウエオ
Logger.log(jarr.b) //カキクケコ
//値を変更することも可能
jarr.b = "XXX";
Logger.log(object);//XXX
//キー自体がわからない時は、parseではなくObject.entriesで分解がわかりやすい。
for (var [key, value] of Object.entries(jarr)) {
Logger.log(`${key}`);//"a" "b"
}
//jsonを分解する(URLでリクエストした場合)
var url = 'リクエストURL';
var res = UrlFetchApp.fetch(url);
var object = JSON.parse(res.getContentText());
Logger.log(object);
//jsonを作る
var obj = {
name: '太郎',
age: 30,
area: 'Tokyo'
}
var json = JSON.stringify( obj );
Logger.log( json ); // { "name": '太郎',"age": "30","area": 'Tokyo'}
//jsonを作る前の辞書型の作り方
var keys = ["name", "address", "tell" ],
values = ["東京都庁舎", "東京都新宿区歌舞伎町1-7-1", "03-5321-1111"],
for (var i = 0, l = keys.length, obj = Object.create(null); i < l; ++i) {
if (values.hasOwnProperty(i)) {
obj[keys[i]] = values[i];
}
}
console.log(JSON.stringify(obj)); // [{"name":"東京都庁舎","address":"東京都新宿区歌舞伎町1-7-1","tell":"03-5321-1111"}]
参考
・GASでTwitterAPIを叩いてみる
・JSON.stringifyを改めて調べる。
・【JavaScript入門】JSONの作成とparse() / stringify()の使い方!
・【JavaScript入門】連想配列(Dictionary)の取得/追加/ソートまとめ
・スプレッドシートのデータからオブジェクトを作成
・二つの配列をそれぞれkeyとvalueにして一つの連想配列にする方法