4

rest-assured を使用してスモーク テストを作成しており、予期しないエラーが発生しないように API をトラバースしたいと考えています。

次のようなデータ構造があります。

{
...
"sites": [
    {
        ...
        "groups": [
            {
                ...
                "locations": [
                    {
                        ...
                        "racks": [
                            {
                                "rackId": 123456789,
                                ...
                            },
                            {
                                "rackId": 987654321,
                                ...
                            },
                            ...
                        ]
                    }
                ]
            }
        ]
    },
    {
        ...
        "groups": [
            {
                ...
                "locations": [
                    {
                        ...
                        "racks": [
                            {
                                "rackId": 11111111,
                                ...
                            },
                            {
                                "rackId": 22222222,
                                ...
                            },
                            ...
                        ]
                    }
                ]
            }
        ]
    },
    ...
]
}

RestAssured にバンドルされている JsonPath を使用して、すべての RackId のフラット リストを取得して、これらの RackId の後続のリクエストを呼び出そうとしています。

jsonPath.getList("sites.groups.locations.racks.rackId", Long.class);

>> java.lang.NumberFormatException: For input string: "[[[406071537, 406071538, 406071539, 406071540, 406071541]]]"

このパスを使用してみましたが、この構文は他の JsonPath 実装でのみ機能し、rest-assured にバンドルされている実装では機能しないと思われるため、機能しませんでした

"$.sites[*].groups[*].locations[*].racks[*].rackId"

これで、リストのリストのリストが得られ、自分自身をフラット化できました。しかし、数値がデフォルトで整数として解釈されるという問題がありますが、Long 値を受け取っています。

 List list = jsonPath.getList("sites.groups.locations.racks.rackId");

何か案は?

4

1 に答える 1