json - 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”提取为一个字段
解决方案
我不知道您要提取哪些字段,但使用 jsonpath 是可行的,即使您有子元素并且想要获取根元素。
使用 talend json 元数据解析您的 json 文件(在 Repository>Metadata>Json File 中)。
将你的循环放在你的子元素上(比如说"$.issues[*].changelog.histories[*].items[*]"
),然后你应该能够在这个子元素中提取所有你想要的字段,以及根元素。
推荐阅读
- python - 重启机器后如何恢复python机器学习?
- pandas - 尝试重新排序 3 级 pandas 多索引列名
- javascript - jquery 返回 POST http://127.0.0.1:8000/like/ 404(未找到)
- firefox - Firefox:向上/向下(和滚动)选项卡时,window.scrollY 注册两次,相隔一个像素
- python - 使用从 for 循环传递的变量名创建对象
- spring-boot - 有没有在scdfdashboard中无法连接`source`和`processor`的情况?
- c++ - 在单独的函数中获取二维数组的数据?
- node.js - Twilio - 我可以转接电话,以便部门的其他人可以接听电话吗?
- swift - 如何在 MacOS 上滚动时修复 SwifyUI 列表的重影?
- javascript - JS 无限循环保护,如何在没有节点或 web-worker 的情况下使用带有 DOM 的 babel-standalone 插件?