JSON形式について
目的
理解できていなかったためまとめてみる
ルール1:APIの応答は、JSON形式で返却されることが一般的
JSON形式(記法)のルール
- キーとバリュで形成されている→キー・バリュー型(追記190430)
- 全体が{} で括られる
- 要素→「"要素名":値」で定義される
- 配列的要素は、[]で括られる
- まとまった領域は{}で括られる
{ "num":2, "score":[ { "kokugo": 90, "suugaku": 80, "eigo": 75, "rika": 85, "shakai": 80, }, { "kokugo": 55, "suugaku": 30, "eigo": 95, "rika": 15, "shakai": 75, } ] }
ルール2:JSONはプログラム内ではオブジェクトである
let aClass{ num: 2, score: [ { kokugo: 90, suugaku: 80, eigo: 75, rika: 85, shakai: 80 }, { kokugo: 70, suugaku: 90, eigo: 65, rika: 25, shakai: 55 } ] } // 1人目の国語の成績を取得 // aClass["score"][0].kokugo // または // aClass.score[0].kokugo
外部からjsonのデータを取得する場合
ルール3:JSONは「parce」でオブジェクト化、「stringify」でテキスト化して扱える
let req = http.get("http://~", (res) => { let chunk = ""; res.on("data", (c) => { chunk = c; }); res.on("end", () => { let response = JSON.parse(chunk); // 取得したら、parse console.log("response: " + JSON.stringify(response)); // stringifyでテキスト化 let address = response["results"][0]; let address1 = address["address1"]; // parseすると、オブジェクトとして扱える agent.add("住所: + address1") }); }); // APIの応答 { "message": null, "results":[ { "address1": "東京都" "address2": "千代田区" "address3": "千代田" "kana1": "トウキョウト" "kana2": "チヨダク" "kana3": "チヨダ" "prefcode": "13" "zipcode": "1000001" } ], "status": 200 }
外部からAPIを呼び出すときはJSON.parseを使う→オブジェクト形式に変換する
JSONからもらってきたdataをオブジェクトとして使うことができる
もしテキストの情報として使いたいときは?
→JSON.stringifyを使う(ログを出力したいときに便利)
参考URL qiita.com