【问题标题】:Talend json file extractTalend json 文件提取
【发布时间】:2020-11-13 09:23:12
【问题描述】:

我有一个有效的 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”提取为字段

【问题讨论】:

  • 显示你尝试过的数据和XPath
  • 所以您正在尝试浏览 JSON 文件并使用 XPath 提取一些数据?
  • 是的,但是当我尝试 xpath 时,它不适用于 talend 中的这个文件。我尝试了另一个较小的文件,它确实使用 xpath 工作。
  • 这是正确的行为,因为 JsonPath 应该应用于 JSON 文件,XPath 应用于 XML。 XPath 不适用于 JSON!
  • 我已将 XPATH 与另一个 json 文件一起使用。如果你能告诉我如何使用 jsonpath 在循环之外获取一个元素,它应该可以解决我的问题。

标签: json xpath talend jsonpath


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多