jsonファイルをパイプライン変数に格納

[English]

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文字列が入っている。