はじめに
https://qiita.com/etoootak/items/71a83c906ae247863d25
の続きです。
今度は「JSON Object Manager」を使ってみます。
手順
やった操作例は前回と同じ。A360のコントロールルームのRESTの戻りJSONを操作します。
$RestResponse{Body}$にJSONが入っているものとします。
(1)JSON Object Manager: Initialize
- JSON Object stringに「$RestResponse{Body}$」を指定。
- Return stringに適当な文字変数を指定して、Initializeの結果を受ける。
- Initialize成功時は、戻りに「Success」が返ります。
(2)JSON Object Manager: Query
- Initializeの後、Queryを発行。
- 例えば以下のJSONがあった場合、「ログイン用のID」を取得するためにJSON query stringに「user.username」を指定する。
- 「return string」に指定した文字列変数に結果が返る。
{
"token":"eyJhb(認証トークンの文字列)HIqh9w",
"user":{"id":999999,"username":"ログイン用のID","domain":null,
"version":32,"principalId":7777777,"deleted":false,
"roles":[
{"name":"AAE_Bot Insight Expert","id":801634,"version":1},
{"name":"CE_user","id":801648,"version":0}
], ....
- Queryの戻りは文字列変数な点に注意。
- 例えば「user.id」でQueryすると戻りの文字列変数に、文字列として999999が返る。
前回試したJSON Paserではちゃんと数字型で返っていたけど、こちらは全部文字列になる。
その他Tips
前述のJSONではrolesの中に要素が2個ある。この個数を調べたい場合はQueryでuser.roles.length()と書く。これも文字列で返るのでループカウンタで使う場合は、数値に変換して使うこと。
と、BotStoreのJSON Object ManagerのReadmeに書いてある。
2個目のRoleのnameを取りたい場合はQueryで「user.roles[1].name」を指定。これで
CE_user
が返る。
rolesのような配列全体を取る事もできて、その場合「user.roles」を指定。これで
[{"name":"AAE_Bot Insight Expert","id":801634,"version":1},{"name":"CE_user","id":801648,"version":0}]
が返る。
などという話もBotStoreのJSON Object ManagerのReadmeに書いてあるので
Actionの説明ページ(以下のURL)にJSONの項が出るまでは、Readmeを参照。