jmespath展平多个哈希值

时间:2017-10-13 18:07:30

标签: json jmespath

理想情况下,我想编写一个返回平面列表输出的查询:["abc", "bcd", "cde", "def"]来自以下JSON示例:

{
  "l_l": [
    [1,2,3],
    [4,5,6]
  ],
  "l_h_l": [
    { "n": [10,2,3] },
    { "n": [4,5,60] }
  ],
  "l_h_m": [
    {
      "n": {
        "1234": "abc",
        "2345": "bcd"
      }
    }, {
      "n": {
        "3456": "cde",
        "4567": "def"
      }
    }
  ]
}

我能得到的最接近的是l_h_m[].n.*,它将我想要的内容作为未列表的列表列表返回:

[
  [
    "abc",
    "bcd"
  ],
  [
    "cde",
    "def"
  ]
]

jmespath允许您展平列表列表。当源json以这种方式构造时,查询l_l[]l_h_l[].n[]都会返回展平结果。

1 个答案:

答案 0 :(得分:2)

看起来你的解决方案只需要另一个展平操作符。

l_h_m[].n.*[]

返回

[
  "abc",
  "bcd",
  "cde",
  "def"
]