introbotics’s blog

人工知能、機械の心について思いついたことを並べてます

スポンサーリンク

youtubeAPIを使ってyoutubeのライブ配信のチャットを取得(Visual Studio C++)③ VC++でのjson利用(picojson導入)

youtubeAPIを使ってyoutubeのライブ配信のチャットを取得(Visual Studio C++)③ VC++でのjson取り扱い

概要

①の記事でC++上のプログラムからAPIへアクセスできるようにしました。

②の記事でyoutubeAPIのURLをブラウザでアクセスすれば

ライブ配信のコメントが取得できることがわかりました。

 

しかしyoutubeAPIはjson形式で情報を公開するため、C++でjsonを扱えるようにした際のメモを残します

手順

1:picojsonを任意の場所にコピー

2:ソースに下記includeを追加

#include "picojson.h"

※私の場合はC++のソースcppと同じ場所に置いたのでパスが通し不要だった。
 フォルダに置くならパスを通す事。

・操作

ほとんどサンプルソースの通り。
ただしyoutubeapiのjsonは配列と階層の組み合わせになっている

 
{
"kind": "youtube#videoListResponse",
"etag": "i6C_FFcnwL2oIY8e6R5On-9BFZI",
"items": [←配列
{
"kind": "youtube#video",
"etag": "PgLd5tzgIf8LyRbe7ehHOJJeplM",
"id": "6A2tqaVyY38",
"liveStreamingDetails": {
"actualStartTime": "2021-03-07T22:29:15Z",
"activeLiveChatId": "Cg0KCzZBMnRxelZ5WTM4KicKGFVDVWtNMlQ1bVNTcXdvVHpLQjcyVjluZxILNkEydHF6VnlZMzg"
}
}
],
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
}
}

 

上記の場合、
1:itemsを参照するarrayAを作成し、
2:arrayAの配列0番を参照するobjectBを作成
3:liveStreamingDetailsを参照するobjectCを作成

4:activeLiveChatIdを入手

 

 

参考

C++のJSONパーサ『picojson』をためしてみました。
https://qiita.com/ayase/items/58c9e63e96857d83ebd9

ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
※curlとの連携例
https://mattn.kaoriya.net/software/lang/c/20090702153947.htm

github
https://github.com/kazuho/picojson

・picojson::value に入った picojson::object のネスト構造をドット区切りのパス文字列で引っ張り出すヘルパー
https://qiita.com/usagi/items/da3568d8fa61e4aafede