如何使用Pentaho Spoon 6 JSON Input读取多嵌套JSON文件

35g0bw71  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(156)

我有一个JSON文件,它有几个子级别,我需要用PDI来解析。
以下是我的JSON示例:

{
    "@gdata.count": "139111",
    "value": [
        {
            "InvStatus": {
                "Description": "Active"
            },
            "DeviceAddresses": [],
            "People": [],
            "Id": "11",
            "InvHostName": "NYCRMR-TWX9000",
            "InvDomain": "blah.masked.com",
            "InvSerialNumber": "86753091",
            "InvDevType": "Workstation",
            "InvRegion": "NA",
            "InvLocation": "114AP2",
            "InvNetwork": "WMG",
            "InvBrand": "RMR",
            "InvProtectionStatus": null,
            "InvConversionStatus": null,
            "InvDeviceDob": "2023-10-23"
        }, {
            "InvStatus": {
                "Description": "Disconnected"
            },
            "DeviceAddresses": [],
            "People": [],
            "Id": "37",
            "InvHostName": "NYCRMR-TWX9002",
            "InvDomain": "blah.masked.com",
            "InvSerialNumber": "86753092",
            "InvDevType": "Workstation",
            "InvRegion": "NA",
            "InvLocation": "114AP4",
            "InvNetwork": "WMG",
            "InvBrand": "RMR",
            "InvProtectionStatus": null,
            "InvConversionStatus": null,
            "InvDeviceDob": "2023-10-23"
        }, {
            "InvStatus": {
                "Description": "Disconnected"
            },
            "DeviceAddresses": [],
            "People": [{
                    "Role": {
                        "Description": "Asset Manager"
                    },
                    "Id": "65571",
                    "Email": "[email protected]"
                }, {
                    "Role": {
                        "Description": "Primary Technical Contact"
                    },
                    "Id": "65477",
                    "Email": "[email protected]"
                }, {
                    "Role": {
                        "Description": "Asset User"
                    },
                    "Id": "65478",
                    "Email": "[email protected]"
                }, {
                    "Role": {
                        "Description": "Secondary Technical Contact"
                    },
                    "Id": "65479",
                    "Email": "[email protected]"
                }, {
                    "Role": {
                        "Description": "Secondary Technical Contact"
                    },
                    "Id": "65475",
                    "Email": "[email protected]"
                }
            ],
            "Id": "44",
            "InvHostName": "-0cc05ac548317d30c",
            "InvDomain": "WORKGROUP",
            "InvSerialNumber": "n/a",
            "InvDevType": "Server",
            "InvRegion": "NA",
            "InvLocation": "FREM45",
            "InvNetwork": "WMB",
            "InvBrand": "OKS",
            "InvProtectionStatus": null,
            "InvConversionStatus": null,
            "InvDeviceDob": "2021-05-03"
        }
    ]
}

字符串
我尝试一步完成所有操作,但只返回嵌套结果中的第一项。
接下来,我尝试分多个步骤执行,第一步检索第一级字段,第二步检索第二级字段,依此类推。
我的第一步是检索这些字段:PDI Screenshot 1
我的第二步是检索这些字段:PDI Screenshot 2
最后发生的是,第二步中的People字段复制到第一步中检索到的所有行,而不仅仅是导致第一步中的第三条记录复制。
上面的JSON只是一个小样本,我的实际记录,我会拉回来是超过100k,我只想有人的记录与设备相关联。

vq8itlhq

vq8itlhq1#

我能够弄清楚这一点,并希望让其他任何寻找解决方案的人知道我是如何解决的。
第二种方法是正确的路径,在第一步中解析出第一级字段,然后在第二步中解析出第二级字段。
我需要做的额外调整是将二级数组的第一级数组提取到一个额外的字段中,在我的示例中我称之为PeopleData。这将只是将小JSON数组放入其自己的字段中,该字段直接绑定到该行的数据,而不是每隔一行。
见屏幕截图:


的数据
然后在我的下一步中,我简单地引用新字段JSON并使用[*]解析该数据,因为这对该行是唯一的,所以它保持了与顶层的关系不变。
见屏幕截图:



我希望这对某人有帮助。

相关问题