2016年3月21日月曜日

LogicApps 上で JSON 値を取得する

今の今までずっと悩んでいた LogicApps 上だけで JSON 値を触る方法ですが、ようやく見つかりましたのでメモしておきます。

海外でも同様の事例で悩んでいる人は多いようで、Stack Overflow 上で同じ話題のスレッドがありました。この中で、「parse 関数用意されてるから使えばいけるよ!」という回答があったので、それに従ってやってみたところ、エラーになったので中身を確認してみると・・・。

image

INPUT / OUTPUT ともにないという結果に。この状態の場合、Logic 上で記載している内容にエラーがあるが定義としてはエラーではない(デザイナー上でエラーにならない)場合を示しています。実際のエラー内容は、下段にある ERROR のところに出漁されているのでこれをコピペして確認してみると次のようになっていました。

{"code":"InvalidTemplate",
"message":"Unable to process template language expressions in action 'Create_file' inputs at line '1' and column '11': 'The template function 'parse' is no longer supported in schema version '2015-08-01-preview'. It has been replaced by the 'json' function since version '2015-08-01-preview'.'."}

簡単にまとめると、parse 関数は 2015-08-01 版では json 関数に名前が変わったからそちらを利用してください、ということです。

MSDN のドキュメントを見てみると、確かに一番最後にそういう記載が・・・

ということで現在の LogicApps では json 関数を、以前の版で利用する場合は parse 関数を利用することで json 値を操作できるというのがわかりました。実際の記載方法は次のようになります。

image

FILE CONTENT のところに記載したのが json 関数を利用している箇所です。グレーアウトされていることから察することができるかと思いますが、今の時点ではデザイナ上から正しく記載することができず、Code View から直接記載することで利用ができている状態です。これはまぁ、そのうち改修されていくものと思います。

上記画像の Create File コネクタの Code は次のように記載されています。

image

サンプルとして記載したのは、testvalue と test2 という二つの値を持つ JSON から、testvalue の値を取得し Azure Blob に出力しています。サンプルでは直接 JSON の値を記載していますが、もちろんここは別の API の結果をそのまま指定したりすることが可能です。

このような形で JSON 値も扱えることがわかったので、LogicApps だけでできることがさらに広がったのではないかと思います。

0 件のコメント:

コメントを投稿