res2dict - Jumeaux
Author: tadashi-aikawa
Description: Check difference between two responses of API.

コンテンツにスキップ

# res2dict

APIレスポンスを差分比較に必要なdictへ変換します。

##
json

JSONレスポンスをdictに変換します。

### Config

#### Definitions

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
force | (bool) | 変換する必要がないケース でも強制的に変換するか | true | false

`force` 変換する必要がないケース

以下のいずれかに一致する場合

- レスポンスのtypeがjsonではない
- 既にアドオンでdict型に変換済みの場合

#### Examples

##### レスポンスがJSONの場合 dictに変換する

      res2dict:
        - name: json

##### 変換する必要がないケースでも強制的に変換する

      res2dict:
        - name: json
          config:
            force: true

##
xml

XMLレスポンスをdictに変換します。

### Config

#### Definitions

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
force | (bool) | 変換する必要がないケース でも強制的に変換するか | true | false

`force` 変換する必要がないケース

以下のいずれかに一致する場合

- レスポンスのtypeがxmlではない
- 既にアドオンでdict型に変換済みの場合

#### Examples

##### レスポンスがXMLの場合 dictに変換する

      res2dict:
        - name: xml

##### 変換する必要がないケースでも強制的に変換する

      res2dict:
        - name: xml
          config:
            force: true

##
html

HTMLレスポンスをdictに変換します。

### Config

#### Definitions

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
force | (bool) | 変換する必要がないケース でも強制的に変換するか | true | false

`force` 変換する必要がないケース

以下のいずれかに一致する場合

- レスポンスのtypeがhtmlではない
- 既にアドオンでdict型に変換済みの場合

#### Examples

##### レスポンスがHTMLの場合 dictに変換する

      res2dict:
        - name: html

##### 変換する必要がないケースでも強制的に変換する

      res2dict:
        - name: html
          config:
            force: true

##
block

ブロック単位(空行で区切られた)のレスポンスをdictに変換します。
ブロック単位の定義は下記セクションを参照してください。

### Config

#### Definitions

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
header_regexp | string | ヘッダ行のキーを抽出する正規表現 |
    ^\d+)(.+)
record_regexp | string | レコード行のkey/valueを抽出する正規表現 |
    ([^ ]+) (.+)
force | (bool) | 変換する必要がないケース でも強制的に変換するか | true | false

header_regexpの正規表現について

グループを1つ定義してください

record_regexpの正規表現について

グループを2つ定義してください. 1つ目がkey 2つ目がvalueになります

`force` 変換する必要がないケース

以下のいずれかに一致する場合

- 既にアドオンでdict型に変換済みの場合

#### Examples

##### INIファイルっぽい形式に変換する

      res2dict:
        - name: block
          config:
            header_regexp: '\[(.+)\]'
            record_regexp: '([^:]+): (.+)'

### ブロック単位のルール

- 1つ以上の空行で区切られた単位をブロック単位とする
- ブロックは1行のヘッダと1行以上のレコードで構成される

#### パターン1

##### 変換対象

    [Mimizou]
    ID: 001
    Name: Mimizou Aikawa

    [Tatsuwo(GOD)]
    ID: 002
    Name: Tatsuwo Aikawa

##### configの設定

    header_regexp: '\[(.+)\]'
    record_regexp: '([^:]+): (.+)'

##### 変換後

    {
      "Mimizou": {
        "ID": "001",
        "Name": "Mimizou Aikawa"
      },
      "Tatsuwo(GOD)": {
        "ID": "002",
        "Name": "Tatsuwo Aikawa"
      }
    }

#### パターン2

##### 変換対象

    1)Mimizou
    ID 001
    Name Mimizou Aikawa

    12)Tatsuwo(GOD)
    ID 002
    Name Tatsuwo Aikawa

##### configの設定

    header_regexp: '^\d+\)(.+)'
    record_regexp: '([^ ]+) (.+)'

##### 変換後

    {
      "Mimizou": {
        "ID": "001",
        "Name": "Mimizou Aikawa"
      },
      "Tatsuwo(GOD)": {
        "ID": "002",
        "Name": "Tatsuwo Aikawa"
      }
    }