Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

繰り返しのある表をJSONで表示したい

Yoshiro_Fujimori
マグネター

業務で使用するExcel表で同じような列が何回も繰り返されるデータがあり

いったん正規化してみたのですが、列名が冗長なため、あまり見にくさが減りませんでした。

 

このため、いっそJSON形式にしてみようかと思い、JSON Buildツールを使ってみたのですが

ネストを繰り返すと出力データに不要なエスケープ文字("\")がたくさん入ってしまい、あまり見やすくなりません。

 

JSON Buildツール は「本番環境用ツールではない」とマニュアルに記載があるので

自助努力で正規表現ツールで上記の現実の出力を理想形に変換しようとしていますが

ネストのレベルの判別で難航しております。

 

実はアプローチ自体が間違っており、JSON Buildを使わずに Formula Tool を使った方が良い気もしてきました。

なにか良いアプローチがあればご教示頂ければ助かります。

 

入力データ

実際のデータはSeqが5回くりかえされ、Colは8~10個(可変)あり、それぞれに長い文字列が入っています。😖

Yoshiro_Fujimori_0-1682734698764.png

 

ワークフロー

Yoshiro_Fujimori_1-1682735644962.png

 

理想形

{
    "Row1": {
        "Seq1":{
            "Col1":"101",
            "Col2":"abc"
        },
        "Seq2":{
            "Col1":"201",
            "Col2":"jkl"
        }
    },
    "Row2": {
        "Seq1":{
            "Col1":"102",
            "Col2":"def"
        },
        "Seq2":{
            "Col1":"202",
            "Col2":"mno"
        }
    }
}
 

 

 

現実の出力

{"Row1":"{\"Seq1\":\"{\\\"Col1\\\":\\\"101\\\",\\\"Col2\\\":\\\"abc\\\"}\",\"Seq2\":\"{\\\"Col1\\\":\\\"201\\\",\\\"Col2\\\":\\\"jkl\\\"}\"}","Row2":"{\"Seq1\":\"{\\\"Col1\\\":\\\"102\\\",\\\"Col2\\\":\\\"def\\\"}\",\"Seq2\":\"{\\\"Col1\\\":\\\"202\\\",\\\"Col2\\\":\\\"mno\\\"}\"}"}

 

4件の返信4
gawa
オーロラ

@Yoshiro_Fujimori さん

今回のように階層がそれほど深くなければ、フォーミュラと集計ツールを駆使するとシンプルかもしれません。

gawa_0-1682748798666.png

 

コンテナの最初のフォーミュラで、ColのValueが数字のときは、二重引用符をつけないようにしてあります。

これにより、JSON Parseで、数字データと認識してくれます。

 

gawa_2-1682749044869.png

 

なにか参考になればうれしいです!

AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん

 

標準的なJSONであればJSON作成ツールもしくはCReWマクロのJSONCreateツールが使えるかと思いますが、少し複雑になるともうお手上げ、というイメージがあります。ダウンロードツールで外部APIを使用する際にJSON形式で渡すことも多いですが、とにかくAPIに合わせないといけないので、フォーミュラとJSON作成ツール、集計ツールを「駆使」して合わせこんでいることがほとんどです・・・。

 

 

AkimasaKajitani_1-1682749327224.png

 

 

 

JSONめんどくさいんですよね・・・。

 

CReWマクロのJSON Createです。

AkimasaKajitani_2-1682749453205.png

 

JSONへ変換する万能なツールはない気がします。

Yoshiro_Fujimori
マグネター

@gawa さん @AkimasaKajitani さん

 

早速のご回答ありがとうございます!

実際のデータはネストが深いのですが、Formula ToolとSummary Toolで手作りも意外と簡単なので週明けにやってみたいと思います。

Yoshiro_Fujimori
マグネター

なお、お二人から頂いたJSONの出力をVS Codeにコピペしたところ、理想形に整形してくれました。💯

 

{
    "Row1": {
        "Seq1": {
            "Col1": 101,
            "Col2": "abc"
        },
        "Seq2": {
            "Col1": 201,
            "Col2": "jkl"
        }
    },
    "Row2": {
        "Seq2": {
            "Col1": 202,
            "Col2": "mno"
        },
        "Seq1": {
            "Col1": 102,
            "Col2": "def"
        }
    }
}