首页 > 解决方案 > Talend json 文件提取

问题描述

我有一个有效的 json 文件(在在线验证器上检查过)。我正在使用 tExtractJsonFields 来提取数据。当我使用 JsonPath 时一切都很好,但是当我尝试使用 xPath 时出现此错误:

The content of elements must consist of well-formed character data or markup. Nested exception: The content of elements must consist of well-formed character data or markup.

我需要使用 xpath,因为我在一个子元素上循环,但我还想获得一个根元素,即 ID。使用 xpath 我可以使用“../../id”这样做,但在 jsonpath 中我无法返回根级别。请我需要帮助。

{
"expand": "names,schema",
"startAt": 0,
"maxResults": 1,
"total": 1580,
"issues": [
    {
        "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields",
        "id": "34202",
        "self": "https://...",
        "key": "DATA-1955",
        "changelog": {
            "startAt": 0,
            "maxResults": 4,
            "total": 4,
            "histories": [
                {
                    "id": "292501",
                    "author": {
                        "self": "https://tlassian.net/rest/api/2/user?accountId=.....",
                        "accountId": "651121611612",
                        "emailAddress": "test@sdfsdf.com",
                        "avatarUrls": {
                            "48x48": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png",
                            "24x24": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png",
                            "16x16": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png",
                            "32x32": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png"
                        },
                        "displayName": "test test",
                        "active": true,
                        "timeZone": "Asia/Beirut",
                        "accountType": "atlassian"
                    },
                    "created": "2020-11-12T14:42:42.397+0200",
                    "items": [
                        {
                            "field": "resolution",
                            "fieldtype": "jira",
                            "fieldId": "resolution",
                            "from": null,
                            "fromString": null,
                            "to": "10000",
                            "toString": "Done"
                        },
                        {
                            "field": "status",
                            "fieldtype": "jira",
                            "fieldId": "status",
                            "from": "3",
                            "fromString": "In Progress",
                            "to": "10001",
                            "toString": "Done"
                        }
                    ]
                },
                {
                    "id": "291885",
                    "author": {
                        "self": "https://......",
                        "accountId": "5f8ede6e9csdwd31840075146dc139b",
                        "emailAddress": "test@sdfsdf.com",
                        "avatarUrls": {
                            "48x48": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png",
                            "24x24": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png",
                            "16x16": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png",
                            "32x32": "https://secure.gravatar.com/avatar/a1440042a929a36696d609892772a08e?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FTH-2.png"
                        },
                        "displayName": "test test",
                        "active": true,
                        "timeZone": "Asia/test",
                        "accountType": "atlassian"
                    },
                    "created": "2020-11-12T13:40:13.232+0200",
                    "items": [
                        {
                            "field": "status",
                            "fieldtype": "jira",
                            "fieldId": "status",
                            "from": "10000",
                            "fromString": "To Do",
                            "to": "3",
                            "toString": "In Progress"
                        }
                    ]
                },
                {
                    "id": "291776",
                    "author": {
                        "self": "https://..........",
                        "accountId": "156516146865",
                        "emailAddress": "test@sdfsdf.com",
                        "avatarUrls": {
                            "48x48": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png",
                            "24x24": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png",
                            "16x16": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png",
                            "32x32": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png"
                        },
                        "displayName": "test test",
                        "active": true,
                        "timeZone": "Asia/test",
                        "accountType": "atlassian"
                    },
                    "created": "2020-11-12T13:36:39.861+0200",
                    "items": [
                        {
                            "field": "assignee",
                            "fieldtype": "jira",
                            "fieldId": "assignee",
                            "from": null,
                            "fromString": null,
                            "to": "5f8ede6e9c31840076dc139b",
                            "toString": "Test test",
                            "tmpFromAccountId": null,
                            "tmpToAccountId": "5f8ede6e9c31840076dc139b"
                        }
                    ]
                },
                {
                    "id": "289995",
                    "author": {
                        "self": "https://.........",
                        "accountId": "asdasd",
                        "emailAddress": "test@sdfsdf.com",
                        "avatarUrls": {
                            "48x48": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png",
                            "24x24": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png",
                            "16x16": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png",
                            "32x32": "https://secure.gravatar.com/avatar/2e1767eb017dcb6bd02f8131f6b3613d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FYM-6.png"
                        },
                        "displayName": "test test",
                        "active": true,
                        "timeZone": "Asia/sdsdsd",
                        "accountType": "atlassian"
                    },
                    "created": "2020-11-12T12:04:00.083+0200",
                    "items": [
                        {
                            "field": "Parent",
                            "fieldtype": "jira",
                            "from": null,
                            "fromString": null,
                            "to": "34194",
                            "toString": "DATA-1952"
                        }
                    ]
                }
            ]
        }
    }
]

}

这是我的 json 文件。你告诉我上传我使用的 xpath,但问题是错误不在 xpath 中。

我已经循环播放“/issues”并将“key”提取为一个字段

标签: jsonxpathtalendjsonpath

解决方案


我不知道您要提取哪些字段,但使用 jsonpath 是可行的,即使您有子元素并且想要获取根元素。

使用 talend json 元数据解析您的 json 文件(在 Repository>Metadata>Json File 中)。

将你的循环放在你的子元素上(比如说"$.issues[*].changelog.histories[*].items[*]"),然后你应该能够在这个子元素中提取所有你想要的字段,以及根元素。


推荐阅读