Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8837

Node.jsでAPIから取得したJSON(ネストあり)を扱う

$
0
0

メディア芸術データベースのAPIを使用してJSONデータを取得したものの、Node.jsでネストありのJSONデータを扱う方法に少し手間取ったため備忘録。
Node.jsでAPIデータ取得→ネストありのJSONデータの扱いについての記事がなかったため残します。

メディア芸術データベース

文化庁がマンガやアニメ、ゲームといったメディア作品の情報を保存し、ベータ版としてデータベースを公開している。

  • 検索サイト

https://mediaarts-db.bunka.go.jp/

  • データベースについて

https://mediaarts-db.bunka.go.jp/about#anc02

APIで取得したJSONの形式

saenai-heroine-no-sodatekata.json
{"hitnum":1,"record":[{"fieldId":"animation","categoryId":"an-col","subcategoryId":"an207","aipId":"C15461","metadata":{"rdf:type":["Collection"],"schema:additionalType":["an"],"schema:genre":["テレビレギュラーアニメシリーズ"],"schema:name":["冴えない彼女*の 育てかた[ヒロイン]"],"schema:name xml:lang=\"ja-Hrkt\"":["サエナイヒロインノソダテカタ","サエナイカノジョノソダテカタ"],"schema:creator":["[監督]亀井幹太"],"schema:contributor":["[シリーズ構成]丸戸史明 / [監督]亀井幹太 / [キャラクターテザイン] / [キャラクターテザイン、総作画監督]高瀬智章 / [美術監督]日下部夏月 / [美術設定]綱頭瑛子 / [音響監督]藤田亜紀子 / [音楽]百石元(F.M.F) / [アニメーション制作]A-1 Pictures / [制作]冴えない製作委員会 / [制作]アニプレックス / [制作]フジテレビジョン / [制作]KADOKAWA富士見書房BC / [制作]京楽産業ホールディングス / [制作]関西テレビ放送 / [制作]電通 / [制作]グッドスマイルカンパニー / [制作]コスパ"],"schema:actor":["【安芸倫也】松岡禎丞 / 【澤村・スペンサー・英梨々】大西沙織 / 【霞ヶ丘詩羽】茅野愛衣 / 【加藤恵】安野希世乃 / 【氷堂美智留】矢作紗友里 / 【波島伊織】柿原徹也 / 【波島出海】赤崎*千夏 / 【石巻基予】大地葉 / 【里見梓】奥野香耶 / 【上郷喜彦】内田雄馬 / 【町田苑子】桑島法子 / 【加藤圭一】斉藤壮馬 / 【澤村小百合】中原麻衣 / 【水原叡智佳】田辺留依 / 【姫川時乃】鈴木絵理 / 【森丘藍子】大地葉"],"schema:publisher":["CX"],"schema:datePublished":["2015-01-09"],"schema:startDate":["2015-01-09"],"schema:endDate":["2015-03-27"],"ma:type":["レギュラー"],"schema:isPartOf":["C5951"],"ma:media":["TVレギュラー"],"ma:Effect":["アニメ"],"ma:periodDisplayed":["00時50分 / フジテレビで放映 / 30分枠"],"ma:runtime":["30分"],"ma:volumeNumber":["13"],"ma:originalCreator":["[原作]丸戸史明"],"ma:contributor":["[アニメーション制作]A-1 Pictures / [制作]冴えない製作委員会 / [制作]アニプレックス / [制作]フジテレビジョン / [制作]KADOKAWA富士見書房BC / [制作]京楽産業ホールディングス / [制作]関西テレビ放送 / [制作]電通 / [制作]グッドスマイルカンパニー / [制作]コスパ"],"ma:source":["CRNT2015(カレント2015新規登録)"],"madbdata:oldDateModified":["2016-04-01T11:44:40"]}}]}

メディア芸術データベースで1件だけヒットさせた結果が上記の通りである。
「"record"」キー配下に検索でヒットした結果のレコードが配列的に格納される。

この記事では、「"record"」キー配下の「"metadata"」の中の「"schema:name"」のValueを扱いたい!みたいな時のやり方の備忘録である。

Node.js(express)のコード(APIで取得→配列に格納→コンソール出力)

index.js
constexpress=require('express');constbodyParser=require('body-parser');consthttps=require('https');// define the Express appconstapp=express();//メディア芸術データベースAPIのURLconstmediaartsdbAPI='https://mediaarts-db.bunka.go.jp/api/search?aipId=C15461';// use bodyParser to parse application/json content-typeapp.use(bodyParser.json());// アプリケーションの「http://localhost:4000/」にアクセスすると、メディア芸術データベースへHTTPでGETしにいく。app.get('/',(req,res)=>{//GETしたJSON(バイナリ)をテキスト化&JSONパースし格納するための変数。letmediaartsdbRec1='';//「"record"」配下の要素を格納するための配列。letmediaartsdbRec2=[];constmediaartsdbGet=https.request(mediaartsdbAPI,(res)=>{letbuf=[];res.on('data',(chunk)=>{buf.push(chunk);//bufにはバイナリの配列の形でJSONが格納される。});res.on('end',()=>{//バイナリをテキスト化し、それをJSONパースする。mediaartsdbRec1=JSON.parse(buf.toString());//「"record"」の要素を配列に格納していく。for(jinmediaartsdbRec1['record']){mediaartsdbRec2.push(mediaartsdbRec1['record'][j]);}console.log(mediaartsdbRec2[0]['metadata']['schema:name']);console.log('JSONデータは以上です。');});})mediaartsdbGet.on('error',(e)=>{console.error(`エラーが出ました: ${e.message}`);});mediaartsdbGet.end();res.send(mediaartsdbRec2);});// start the serverapp.listen(4000,()=>{console.log('listening on port 4000');});

http://localhost:4000/にブラウザでアクセスした時のコンソール実行結果

/App/backend # node src
listening on port 4000
[ '冴えない彼女*の 育てかた[ヒロイン]' ]
JSONデータは以上です。

「"record"」キー配下の「"metadata"」の中の「"schema:name"」のValueをconsole.logで表示できました。
あとは同じようにして変数に入れるなりすれば活用できるかと。


Viewing all articles
Browse latest Browse all 8837

Trending Articles