Java 如何通过Jayway JsonPath使用嵌套列表展平json?

Java 如何通过Jayway JsonPath使用嵌套列表展平json?,java,json,jsonpath,jayway,Java,Json,Jsonpath,Jayway,目前,我需要根据配置处理一些json结果,但不需要硬代码 例如,使用json,如下所示 { data: [{ orderNo: "CG8310150", details: [{ skuId: 4384, amount: 2 }, { skuId: 4632, amount: 5 }] }, { orderN

目前,我需要根据配置处理一些json结果,但不需要硬代码

例如,使用json,如下所示

{
    data: [{
        orderNo: "CG8310150",
        details: [{
            skuId: 4384,
            amount: 2
        }, {
            skuId: 4632,
            amount: 5
        }]
    }, {
        orderNo: "CG8310151",
        details: [{
            skuId: 4384,
            amount: 3
        }]
    }]
}
[{
    orderNo: "CG8310150",
    skuId: 4384,
    amount: 2
}, {
    orderNo: "CG8310150",
    skuId: 4632,
    amount: 5
}, {
    orderNo: "CG8310151",
    skuId: 4384,
    amount: 3
}]
我希望结果如下

{
    data: [{
        orderNo: "CG8310150",
        details: [{
            skuId: 4384,
            amount: 2
        }, {
            skuId: 4632,
            amount: 5
        }]
    }, {
        orderNo: "CG8310151",
        details: [{
            skuId: 4384,
            amount: 3
        }]
    }]
}
[{
    orderNo: "CG8310150",
    skuId: 4384,
    amount: 2
}, {
    orderNo: "CG8310150",
    skuId: 4632,
    amount: 5
}, {
    orderNo: "CG8310151",
    skuId: 4384,
    amount: 3
}]
如果有人有关于Jayway JsonPath的解决方案,或者对其他工具有任何建议,请告诉我


谢谢你的帮助

您可以使用JsonPath从该JSON投影结果。例如:

  • $['data'][*]['orderNo']
    返回:

    ["CG8310150","CG8310151"]
    
    [{"skuId":4384,"amount":2},{"skuId":4632,"amount":5},{"skuId":4384,"amount":3}]
    
  • $['data'][*]['details'][*]['skuId','amount']
    返回:

    ["CG8310150","CG8310151"]
    
    [{"skuId":4384,"amount":2},{"skuId":4632,"amount":5},{"skuId":4384,"amount":3}]
    

但是您不能在一次通过JsonPath的过程中组合这两个表达式,因此您不能使用JsonPath返回目标输出。

非常感谢您让我知道,使用JsonPath配置来实现项目+展平结果是不可用的。我将选择其他解决方案,例如使用一段groovy代码作为配置@glytchingA您的答案的很大一部分是描述如何用硬代码的方式实现项目+扁平化操作,这显然不是我在问题中所追求的。我认为指出JsonPath的局限性就足够了。因此,请编辑您的答案,并删除与我的问题描述不符的部分,以避免他人误解,然后我将乐意接受您的答案。再次感谢你@格利钦