jsonファイルをパイプライン変数に格納
BLOBストレージ上のjsonファイルをパイプライン変数に格納する例。
jsonファイルの内容を少し変えて(キー名等を変えて)Web Accessアクティビティに使用したい場合。
本来は、Copyアクティビティを使って変換するが、Copyアクティビティではできないような細かな処理を行いたい場合に、無理やり文字列操作で実現する。
この処理の場合、改行コードなどJSONでエスケープしなければならない文字列を全て自前でエスケープする必要がある。
1.BLOBストレージ上のjsonファイル
{
"datarecords" : [
{ "name" : "name01", "value" : " value01" },
{ "name" : "name02", "value" : "value02" }
]
}
2.変換後のjson
{
"records" : [
{
"attr" : { "rid" : "name01"},
"id" : "name01",
"info" : "value01"
},
{
"attr" : { "rid" : "name01"},
"id" : "name02",
"info" : "value02"
}
]
}
3. パイプライン
3.1. パイプライン変数
BUFFER_V1_1 String
BUFFER_V1_2 String
BUFFER_V1_3 String
3.2. パイプライン構成
3.3. Lookup1 (参照)
- SRC …. json ファイルを指定
- 「先頭行のみ」のチェックをはずす
3.4. ForEach1 (繰り返し)
- 順次にチェック
- 項目:
@activity('Lookup1').output.value[0].datarecords
3.5. Set V1 (変数の設定)
- 変数:BUFFER_V1_1
- 項目:
@concat(variable('BUFFER_V1_2'), '{ "attr":{ "rid": "', ESCAPE(item().name), '"}, "id":"', ESCAPE(item().name), '","info":"', ESCAPE(item().value),'"}')
ここで、上記 ESCAPE()の部分は実際には以下の記述になる。
uriComponentToString(replace(replace(replace(replace(replace(urlComponent(coalesce( *** , ”)),’%5C’,’%5C%5C’), ‘%22′,’%5C%22’), ‘%0D’,’%5Cr’), ‘%0A’, ‘%5Cn’), ‘%09’, ‘%5Ct’))
replace(**, ‘%5C’,’%5C%5C) ….. “\”を”\\”に置換
replace(**, ‘%22’,’%5C%22) ….. “”” を “\””に置換
replace(‘**’, ‘%0D’,’%5Cr’) …. \rを “\r”に置換
replace(‘**’, ‘%0A’,’%5Cn’) …. \nを “\n”に置換
replace(‘**’, ‘%09′,’%5Ct’) ….. \t を “\t”日間
3.6. Set V2 (変数の設定)
- 変数:BUFFER_V1_2
- 項目:
@concat(variable('BUFFER_V1_1'), ',')
3.7. Set V3 (変数の設定)
- 変数:BUFFER_V1_3
- 項目:
@concat(variable('BUFFER_V1_3'), '{ "records" [', variable('BUFFER_V1_1'),'}')
以上で、上記パイプラインが終わったあとに、変数 BUFFER_V1_31には、返還後のjson文字列が入っている。