10.4. JSONの取込・出力設定方法まとめ

JSON(REST API連携)による設定の手順をご紹介します。
画面操作については『Accel-KNIGHT 操作ガイド』を参照してください。

10.4.1. 事前準備

JSONの取込を行うためにはロジックフローを作成し連携します。
取込の場合はユーザ定義(REST)から外部サービスのJSON情報を受取りロジックフローで呼び出しJSON文字列に変換し取込を行います。
出力の場合は出力文字列をロジックフローに渡しロジックフローから外部サービスへ連携を行います。
IM-LogicDesignerの概要、ロジックフローの作成方法等についての詳しい内容は『intra-mart Accel Platform IM-LogicDesigner ユーザ操作ガイド』『intra-mart Accel Platform IM-LogicDesigner チュートリアルガイド』を参照してください。
取込を行うためのユーザ定義の作成
「ユーザ定義 - REST」を作成します。
作成の際、レスポンス種別を「json」で指定します。
../../../_images/import_json_flow_03.png
取込を行うためのロジックフローの作成
入出力設定の出力に「akJsonStr(String型)」を設定します。
変数操作で「toJSON」関数を使用しユーザ定義の結果オブジェクトをJSON文字列に変換し変数「akJsonStr」にマッピングします。
../../../_images/import_json_flow_01.jpg
出力を行うためのユーザ定義の作成
「ユーザ定義 - REST」を作成します。
入力値にロジックフローから受け取る変数を設定します。
出力を行うためのロジックフロー入出力設定
入力に「akJsonStr(String型)」を設定します。
../../../_images/import_json_flow_02.jpg
変数操作で「parseJSON」関数を使用し変数「akJsonStr」をJSONオブジェクトに変換します。
作成したユーザ定義にマッピングします。

10.4.2. 取込可能なJSON文字列について

Accel-KNIGHTではオブジェクト型と配列型のJSONを取込対象とすることが可能です。
  • JSONオブジェクト
    オブジェクト型は全体が中括弧 { } で囲まれており単項目の要素や配列が混在しています。
{
  "キー情報1" : "データ1",
  "キー情報2" : "データ2",
  "キー情報3" : ["配列データ3-1","配列データ3-2","配列データ3-3","配列データ3-4"]
}
  • JSON配列
    配列型は角括弧 [ ] で囲まれており配列内にはオブジェクト同様に各要素が設定されています。
[
  {
    "キー情報1" : "データ1-1",
    "キー情報2" : "データ1-2",
    "キー情報3" : "データ1-3"
  },
  {
    "キー情報1" : "データ2-1",
    "キー情報2" : "データ2-2",
    "キー情報3" : "データ2-3"
  },
  {
    "キー情報1" : "データ3-1",
    "キー情報2" : "データ3-2",
    "キー情報3" : "データ3-3"
  }
]

10.4.3. 配列の要素、単項目の要素が混在するJSON文字列を取り込む

JSONオブジェクトの文字列を取込む場合の設定になります。
取込対象のJSONオブジェクトイメージ
{
  "dataType" : "User",
  "dataNote" : "備考",
  "data" : [
              {
                 "userId"   : "sampleUser01",
                 "userName" : "サンプルユーザ01",
                 "userKana" : "さんぷるゆーざぜろいち",
                 "sex"      : "male",
                 "birth"    : "2000/01/01",
                 "age"      : 24,
                 "locale"   : "ja",
                 "Address"  : {
                                 "country"  : "日本",
                                 "zipCode"  : "108-0014",
                                 "pref"     : "東京都",
                                 "city"     : "港区",
                                 "street"   : "芝 XXXXX-XXXXX "
                              },
                 "OfficePhone"    : "000-111-2222",
                 "MobilePhone"    : "333-444-5555",
                 "arrayData"      : ["01","02","03","04","05"],
                 "Phone"    : [
                                 { "type" : "Office", "number" : "000-111-2222" },
                                 { "type" : "Mobile", "number" : "333-444-5555" }
                              ],
                 "URL"      : "http://www.xxx.xxx",
                 "note"     : "備考"
              },
              {
                 "userId"   : "sampleUser02",
                 "userName" : "サンプルユーザ02",
                 "userKana" : "さんぷるゆーざぜろに",
                 "sex"      : "female",
                 "birth"    : "2000/01/01",
                 "age"      : 24,
                 "locale"   : "ja",
                 "Address"  : {
                                 "country"  : "日本",
                                 "zipCode"  : "108-0014",
                                 "pref"     : "東京都",
                                 "city"     : "港区",
                                 "street"   : "芝 XXXXX-XXXXX "
                              },
                 "OfficePhone"    : "000-111-2222",
                 "MobilePhone"    : "333-444-5555",
                 "arrayData"      : ["01","02","03","04","05"],
                 "Phone"    : [
                                 { "type" : "Office", "number" : "000-111-2222" },
                                 { "type" : "Mobile", "number" : "333-444-5555" }
                              ],
                 "URL"      : "http://www.xxx.xxx",
                 "note"     : "備考"
              }
           ]
}

10.4.3.1. ロジックフロー作成

事前にJSON文字列を取得するためのロジックフローを作成します。
ロジックフローでは各サービスへアクセスし取得したJSON文字列を入出力設定の出力に「akJsonStr(String型)」に設定します。

10.4.3.2. 取込ファイル定義作成

基本情報でJSON区分を「オブジェクト」、JSON配列キー情報に「data」、JSON連携フローIDに作成したロジックフローを設定します。
../../../_images/json_01.png
項目明細にJSON配列キー情報「data」内のキーを設定します。
オブジェクト(Address)内の「country」を設定する場合は「:」(半角コロン)で区切り「 Address:country 」を設定します。
配列(arrayData)を設定する場合キーの後ろに「 [] 」(半角角括弧)を記載し「 arrayData[] 」を設定します。要素の番号指定はマッピング定義画面で行います。
配列とオブジェクトの組み合わせ(Phone)の場合は「 Phone[]:number 」を設定します。
../../../_images/json_02.png
../../../_images/json_03.png
JSON配列キー情報「data」以外のキーを取込対象とする場合はJSONオブジェクト明細に設定します。
../../../_images/json_04.png

10.4.3.3. マッピング定義作成

マッピング定義は通常のCSVファイル設定と同様の設定を行います。
マッピング定義画面でJSONオブジェクト明細の設定、配列の設定を行う場合はJSONコンポーネントを使用します。
JSONコンポーネントを配置すると入力画面が表示されるのでマッピング情報を入力します。
JSONオブジェクト明細を設定する場合は「%json_obj_xxx%」(xxxは番号を指定)を設定します。
配列番号を設定する場合は「%json_idx_xxx%」(xxxは番号を指定)を設定します。
../../../_images/json_16.png
../../../_images/json_17.png
JSONオブジェクト明細の設定
登録したJSONオブジェクト明細とインデックス情報
登録した順から「%json_obj_001%」「%json_obj_002%」(以降連番)となります。
../../../_images/json_07.png
マッピング定義画面でJSONオブジェクト明細を設定する場合はJSONコンポーネントを使用します。
「dataType」をマッピングする場合は「%json_obj_001%」を設定します。
../../../_images/json_06.png
配列の設定
取込ファイル定義の明細で登録した配列情報
../../../_images/json_15.png
JSONコンポーネントを使用しマッピング済みの配列に重ねて配置します。
「”type” : “Mobile”」のデータをマッピングする場合は「%json_idx_002%」(002は要素の番号)を指定します。
../../../_images/json_05.png

10.4.3.4. 取込設定作成

取込設定は通常のCSVファイル設定と同様の設定を行います。

10.4.4. データ全体が配列のJSON文字列を取り込む

JSON配列の文字列を取込む場合の設定になります。
取込対象のJSON配列イメージ
[
  {
     "userId"   : "sampleUser01",
     "userName" : "サンプルユーザ01",
     "userKana" : "さんぷるゆーざぜろいち",
     "sex"      : "male",
     "birth"    : "2000/01/01",
     "age"      : 24,
     "locale"   : "ja",
     "Address"  : {
                     "country"  : "日本",
                     "zipCode"  : "108-0014",
                     "pref"     : "東京都",
                     "city"     : "港区",
                     "street"   : "芝 XXXXX-XXXXX "
                  },
     "OfficePhone"    : "000-111-2222",
     "MobilePhone"    : "333-444-5555",
     "arrayData"      : ["01","02","03","04","05"],
     "Phone"    : [
                     { "type" : "Office", "number" : "000-111-2222" },
                     { "type" : "Mobile", "number" : "333-444-5555" }
                  ],
     "URL"      : "http://www.xxx.xxx",
     "note"     : "備考"
  },
  {
     "userId"   : "sampleUser02",
     "userName" : "サンプルユーザ02",
     "userKana" : "さんぷるゆーざぜろに",
     "sex"      : "female",
     "birth"    : "2000/01/01",
     "age"      : 24,
     "locale"   : "ja",
     "Address"  : {
                     "country"  : "日本",
                     "zipCode"  : "108-0014",
                     "pref"     : "東京都",
                     "city"     : "港区",
                     "street"   : "芝 XXXXX-XXXXX "
                  },
     "OfficePhone"    : "000-111-2222",
     "MobilePhone"    : "333-444-5555",
     "arrayData"      : ["01","02","03","04","05"],
     "Phone"    : [
                     { "type" : "Office", "number" : "000-111-2222" },
                     { "type" : "Mobile", "number" : "333-444-5555" }
                  ],
     "URL"      : "http://www.xxx.xxx",
     "note"     : "備考"
  }
]

10.4.4.1. ロジックフロー作成

事前にJSON文字列を取得するためのロジックフローを作成します。
ロジックフローでは各サービスへアクセスし取得したJSON文字列を入出力設定の出力に「akJsonStr(String型)」に設定します。

10.4.4.2. 取込ファイル定義作成

基本情報でJSON区分を「配列」、JSON連携フローIDに作成したロジックフローを設定します。
../../../_images/json_08.png
項目明細にJSON配列キー情報を設定します。
オブジェクト(Address)内の「country」を設定する場合は「:」(半角コロン)で区切り「 Address:country 」を設定します。
配列(arrayData)を設定する場合キーの後ろに「 [] 」(半角角括弧)を記載し「 arrayData[] 」を設定します。要素の番号指定はマッピング定義画面で行います。
配列とオブジェクトの組み合わせ(Phone)の場合は「 Phone[]:number 」を設定します。
../../../_images/json_09.png
../../../_images/json_10.png

10.4.4.3. マッピング定義作成

マッピング定義は通常のCSVファイル設定と同様の設定を行います。
マッピング定義画面で配列の設定を行う場合はJSONコンポーネントを使用します。
JSONコンポーネントを配置すると入力画面が表示されるのでマッピング情報を入力します。
配列番号を設定する場合は「%json_idx_xxx%」(xxxは番号を指定)を設定します。
../../../_images/json_16.png
../../../_images/json_17.png
配列の設定
取込ファイル定義の明細で登録した配列情報
../../../_images/json_15.png
JSONコンポーネントを使用しマッピング済みの配列に重ねて配置します。
「”type” : “Mobile”」のデータをマッピングする場合は「%json_idx_002%」(002は要素の番号)を指定します。
../../../_images/json_05.png

10.4.4.4. 取込設定作成

取込設定は通常のCSVファイル設定と同様の設定を行います。

10.4.5. データベースのレコードをJSON文字列出力して外部システムの登録APIを実行

10.4.5.1. ロジックフロー作成

JSON文字列を取得し外部サービスへ出力するロジックフローを作成します。
入出力設定の入力に「akJsonStr(String型)」に設定されます。
文字列をファイルで保存、外部サービスへの連携を実装してください。

10.4.5.2. 取込ファイル定義作成

基本情報でJSON区分を「オブジェクト」または「配列」、JSON連携フローIDに作成したロジックフローを設定します。
../../../_images/json_11.png
出力するキー情報を設定します。
../../../_images/json_12.png

10.4.5.3. マッピング定義作成

マッピング定義は通常のCSVファイル出力時と同様の設定を行います。
「IM共通マスタ:ユーザ」を出力する場合のマッピング例
../../../_images/json_13.png
../../../_images/json_14.png

10.4.5.4. 出力設定

出力設定は通常のCSVファイル設定と同様の設定を行います。

10.4.5.5. 出力結果文字列

JSONオブジェクトで出力した場合、「data」キー情報に配列として設定され出力されます。
{
    "data":[
        {
             "Locale":"ja",
             "UserName":"ユーザ00001",
             "UserId":"u00001",
             "deleteFlg":"false",
             "UserNameKana":"ゆーざ00001"
        },
        {
             "Locale":"ja",
             "UserName":"ユーザ00002",
             "UserId":"u00002",
             "deleteFlg":"false",
             "UserNameKana":"ゆーざ00002"
        }
    ]
}
JSON配列で出力した場合
[
    {
         "Locale":"ja",
         "UserName":"ユーザ00001",
         "UserId":"u00001",
         "deleteFlg":"false",
         "UserNameKana":"ゆーざ00001"
    },
    {
         "Locale":"ja",
         "UserName":"ユーザ00002",
         "UserId":"u00002",
         "deleteFlg":"false",
         "UserNameKana":"ゆーざ00002"
    }
]