0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

REST WebサービスとJSONパーサー

Last updated at Posted at 2021-07-18

#はじめに
Automation 360でJSONパーサーを使うとき、ちょっとハマったのでメモ。

##操作例としてやった事

  • Automation 360のREST Webサービスを使いAutomation 360のコントロールルームに接続。
  • コントロールルームからの応答をJSONで受け取る
  • 受け取ったJSONをAutomation 360の「JSONParser」で解析して一部を表示させる。

##おことわり
Automation 360 Community Edition build9637で試しました。
(community.cloudです。community2.cloud-2にはありません)

製品版に「JSONParser」が入ってくるときには異なるかもしれません。

#手順
(1)RESTでコントロールルームに接続

  • コントロールルームに接続 を使用

  • URIに「https://community2.cloud-2.automationanywhere.digital/v1/authentication」

  • 認証モード:認証なし

  • ヘッダーで以下を指定
    header.jpg
    ※本当は資格情報を使うべきですが、話がそれるので直接入力。

  • 変数に出力を代入で適当な辞書変数に格納(変数RestResponseとします)

(2)レスポンスを確認
うまく接続できたかどうか$RestResponse{Body}$を確認します。

(3)「JSONParser: JSON to Dictionary」でJSONを辞書変数に。
paeser.jpg

  • 仮に変数JsonDictとします。サブタイプを「任意」に指定すること(1つ目のハマり点)。

(4)変数JsonDictを表示してみる。
今回のRESTの戻りは以下のようになっています。

{
 "token":"eyJhb(認証トークンの文字列)HIqh9w",
 "user":{"id":999999,"username":"ログイン用のID","domain":null,
        "version":32,"principalId":7777777,"deleted":false,
         "roles":[{"name":"AAE_Bot Insight Expert", .....

続けてサービスを受けるためのtokenの取り出しは簡単。
辞書のキーをtokenにして、$JsonDict{token}$ でOK。

userの中のusernameを取る所が2つ目のハマり点。

結論としてうまくいったのは以下。

  • ディクショナリの代入で、$JsonDict{user}$を新たな辞書変数(仮にuserDict)に入れる。
  • $userDict{username}$で、取り出しOK。
  • idのように数値型を取るときには、$userDict{id}.Number:toString$

BotStoreにあるJSONParserのReadmeを見て、
キーをuser.usernameとしたのがハマりの元(これではダメでした)。
BotStoreのJSONParserはメソッドの数が少し違うし、
Community Editionに入ったJSONParserとはちょっと違う?

#さいごに
複雑なJSONなら「JSON Object Manager」を使った方が良いかもしれません。
詳しくは以下に。
https://qiita.com/etoootak/items/6c508d2bfa6b1f1ac735
「JSON Object Manager」はネストが深い所でも一発で取れて便利だけど
戻りが全て文字列になるので、用途によって使い分けかな。

おまけ

あ、JSON Paser, JSON Object Manager は
community.cloud.automationanywhere.digital にはデフォルトで入っているけど
community2.cloud-2.automationanywhere.digital には無いじゃないか。

[2022/04/21追記]
Automation360 v24で、「Json」パッケージが追加されました。
使い方は、ここで書いたBotStoreの「JSON Paser」「JSON Object Manager」とまた異なります。
「Json」パッケージは、現在のところJsonの読み出しだけで、Jsonテキストを作る用途で今使えるのは「Json Paser」パッケージの「Disctionary to JSON」アクションだけかな。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?