1

是否有一个 jmespath 表达式可以转换:

{ "a": 5
, "b": [ {"c":6}, {"c":7}, {"c":8}]
}

进入这个:

[ {"a":5, "c":6}
, {"a":5, "c":7}
, {"a":5, "c":8}
]

提前谢谢了!

4

1 回答 1

1

语境

  • jmespath 查询
  • 如何产生对父对象元素的交叉引用

解决方案

  • 这可以通过 jmespath 实现,但不幸的是,结果必须手动构建,这显然可能不是您想要的

例子

给定以下数据集...

    { "a": 5
    , "b": [ {"c":6}, {"c":7}, {"c":8}]
    }

... 以下 jmespath 查询 ...

    [
        @.{"a":"a","c":"b"[0].c}
        , @.{"a":"a","c":"b"[1].c}
        , @.{"a":"a","c":"b"[2].c}
    ]

...产生以下结果

    [
      {"a":5, "c":6}
    , {"a":5, "c":7}
    , {"a":5, "c":8}
    ]

陷阱

  • Jmespath 非常出色地迭代序列,但没有以相同程度的灵活性迭代对象键(也称为名称-值对)
于 2019-03-23T05:54:26.707 回答