Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JSONは怖くない
Search
MiyakeMito
January 29, 2022
Technology
13k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JSONは怖くない
MiyakeMito
January 29, 2022
More Decks by MiyakeMito
See All by MiyakeMito
Power Automateアップデート情報
miyakemito
0
410
マルチステージとAI承認について
miyakemito
1
220
Copilot Studioについて
miyakemito
9
10k
Dataverseの検索列について
miyakemito
2
2.1k
AI Builder について
miyakemito
3
1.2k
Microsoft Copilot Studio についてざっくり説明
miyakemito
2
1.9k
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
5
4.2k
JSON攻略法.pdf
miyakemito
13
7.4k
ガンダムBotを1分でつくってみせろよ
miyakemito
1
940
Other Decks in Technology
See All in Technology
macOS Golden Gate 時代のMac管理
tategami
0
120
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
140
[EMNLP26] RIGEL: Self-Distilled Score Adaptation for Image and Video Captioning Evaluation
keio_smilab
PRO
0
110
顧客価値を追いかけたら、プライシングにたどり着いた
sansantech
PRO
2
400
「エーアイ」をバズワードにしないために RPA 導入経験と Kiro 上での Claude モデル利用経験から
kazzpapa3
0
110
こんにちは!SORACOM です & IoT とは【SORACOM UG 東北 in 八戸】
soracom
PRO
0
170
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1.1k
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
220
Browser Spec: Testing Hotwire with Ruby
takahashim
1
160
Refining Active Record
shugo
0
190
Let's Change Our World—Again
snoozer05
PRO
5
330
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
570
Odyssey Design
rkendrick25
PRO
2
880
Making Projects Easy
brettharned
120
6.8k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
590
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
BBQ
matthewcrist
90
10k
Transcript
JSONについて 気ままに勉強会 #06
今日の目標 JSONコワクナイヨー
アジェンダ 1. JSONとは 2. Power AutomateでJSONが怖くなくなると 3. Power AutomateでJSONを扱う 4.
Power AutomateでJSONの発展
Miyake Mito https://www.icsoft.jp/ @MiTo60448639 https://qiita.com/MiyakeMito
本日の参考サイト ▪ JSONと仲良くなるために (まとめ) https://mofumofupower.hatenablog.com/entry/2020/09/04/190039 ▪ Apply to each のパフォーマンス改善
(配列加工の場合) https://mofumofupower.hatenablog.com/entry/2020/08/12/093000 ▪ JSON でほしいデータを取得する "Path" を確認するツールのご紹介 https://mofumofupower.hatenablog.com/entry/2021/04/22/155214 ▪ Power Automateの裏側をみてみよう! (1/2) https://qiita.com/h-nagao/items/be565fdac60a9b2968d5 ▪ Power Automateの裏側をみてみよう (2/2) https://qiita.com/h-nagao/items/4f590a6e3b21ea669d0d
JSON とは
本日のJSON { "名前": "アメリカ合衆国", "地区": "北アメリカ", "地理": { "首都": "ワシントンD.C.",
"面積": 9834000, "人口": 331003000, "主要都市": [ {"名前": "ニューヨーク", "人口": 17799861}, {"名前": "ロサンゼルス", "人口": 11789487}, {"名前": "シカゴ", "人口": 8307904}, {"名前": "ホノルル", "人口": 718182} ] }, "言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ], "渡航歴": true }
JSONのルール:その1 1. 「キー」と「値」で構成され、コロンで繋げます 2. 「キー」はダブルクオーテーションで囲みます 3. 「キー:値」はカーリーブラケットで囲みます { “名前”: “アメリカ合衆国”
}
{ "名前": "アメリカ合衆国", "地区": "北アメリカ", “地理": { "首都": "ワシントンD.C.", "面積":
9834000, "人口": 331003000 }, "言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ], "渡航歴": true } JSONのルール:その2 4. 複数「キー:値」が並ぶときは、カンマで 区切ります 5. 「値」には以下の型が設定できます ① 文字列 ② 数字 ③ Boolean型(true/false) ④ オブジェクト ⑤ 配列 ⑥ null
練習➀ ➀首都の情報をJSONで記載してください ・首都 は ワシントンD.C. ② ➀に以下の情報を追加してください ・面積 は 9834000
・人口 は 331003000 { “首都”: “ワシントンD.C.” } { "首都": "ワシントンD.C.", "面積": 9834000, "人口": 331003000 }
JSONのルール:オブジェクト JSONを複雑怪奇にする困ったヤツ、その1 • 「キー:値」はオブジェクト • 「キー」に対し、「キー:値」(オブジェクト)を「値」として設定できます • オブジェクトを入れ子にすると構造は階層化しますが、情報がグループ化され 意味づけがされます •
データを取得する際は、[‘キー’]⇒[‘キー’] と階層をネストしながら指定します { "地理": { "首都": "ワシントンD.C.", "面積": 9834000, "人口": 331003000 } }
JSONのルール:配列 JSONを複雑怪奇にする困ったヤツ、その2 • 同一型の複数データを連続的に並べたデータ構造です • ブラケットで囲み、各アイテム(要素)はカンマで区切ります • データを取得する際は、添え字(何個目のデータ)を指定します • 各要素は、オブジェクトで指定することも可能です
"言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ] "主要都市": [ {"名前": "ニューヨーク", "人口": 17799861}, {"名前": "ロサンゼルス", "人口": 11789487}, {"名前": "シカゴ", "人口": 8307904}, {"名前": "ホノルル", "人口": 718182} ]
JSONの階層化 { "名前": "アメリカ合衆国", "地区": "北アメリカ", "地理": { "首都": "ワシントンD.C.",
"面積": 9834000, "人口": 331003000, "主要都市": [ {"名前": "ニューヨーク", "人口": 17799861}, {"名前": "ロサンゼルス", "人口": 11789487}, {"名前": "シカゴ", "人口": 8307904}, {"名前": "ホノルル", "人口": 718182} ] }, "言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ], "渡航歴": true } こんなJSONから、 Power Automate で 目的の「キー」に対する 値を取得する方法を説明 します
Power Automateで JSONが 怖くなくなると
Power AutomateでのJSON
Power AutomateでのJSON トリガーの Input と Output は JSON です
アクションの Input と Output も JSON です
どう活用できるの? 「動的なコンテンツ」で、目的の項目が取得しにくいとき triggerBody()?['events']?[0]?['message']?['type'] ダイレクトにコンテンツの指定が可能
実行速度が遅すぎる Apply to each を撲滅したいとき outputs('開始して承認を待機')?['body']?['responses']?[0]?['responder']?['email'] ダイレクトにコンテンツの指定が可能 承認者は一人なのに、 自動でApply to
each になっちゃう お、遅い・・・
トリガーの実行条件を絞りたいとき トリガーの実行条件を 設定できます ▪ 条件に合わない時はフローが実行しない為、実行回数の節約に効きます ▪ SPOの「アイテムが作成または変更されたとき」の作成のみ条件とした い場合 ・・・など @equals(triggerBody()?['Created'],triggerBody()?['Modified'])
Adaptive Cards に変数を入れたいとき JSONの構造が分かると、 カスタマイズし放題です
Power Automateで JSONを扱う
ここで Automate の設定変更 設定 ⇒すべての Power Automate 設定を表示 試験的な機能 をオン
JSONを作る ▪ 「データ操作」-「作成」 ▪ 「変数を初期化する」 全体が { } で囲まれている ⇒
オブジェクト 全体が [ ] で囲まれている ⇒ アレイ
目的の値をゲット-JSONの解析 「データ操作」-「JSONの解析」でJSONから目的の項目が 取得できます JSONを貼付け 項目が参照できる
目的の値をゲット-アクション編 JSON Pretty Linter (https://lab.syncer.jp/Tool/JSON-Viewer/) ①実行履歴の未加工出力の表示を JSON Pretty Linter へ貼付けする
ビューアーで[Path]を有効化し、 目的の値のパスをクリック object['body']['responses'][0]['responder']['displayName'] ②Objectを outputs(‘Action名’)? に 置換する outputs('開始して承認を待機’)? ['body']?['responses']?[0]?['responder']?['displayName'] ③ブラケット間に”?”を挿入
trigger()?['body']?['body']?['content'] ③ブラケット間に”?”を挿入 目的の値をゲット-トリガー編 ①実行履歴の 未加工出力の表示を JSON Pretty Linter貼付けする ②Objectを trigger()?
に置換する object['body']['body']['content']
variables('CountryInformation')?[0]?['名前'] object[0]['名前'] ②Objectを variables(‘変数名‘)? に置換する ③ブラケット間に”?”を挿入 目的の値をゲット-変数編 ①変数で入力した値をJSON Pretty Linter貼付けする
Power Automateで JSONの発展
Apply to each 対策 Apply to each は極力撲滅! ・・・遅い
Apply to each 対策① JSON配列の 全レコードから特定のカラム を取得する場合は 選択(と結合) [開始]に含まれるカラムは item()?[‘カラム名’]
で取得できる
Apply to each 対策② JSON配列の 特定のレコードの特定のカラム を取得する場合は JSON Pretty Linter
「選択」アクションがあると・・・ Apply to Each なしで ▪ 文字列を1文字ずつ配列に変換
「選択」アクションがあると・・・ Apply to Each なしで 文字列の指定の位置を変換
色々使うと オセロも作れます Power Virtual Agetns も利用してます
まとめ JSON怖くないでしょ? むしろ好きになっちゃった? 使いこなして面白フローをつくろう!
ありがとうございました