【问题标题】:Use component tExtractJSONFields in Talend在 Talend 中使用组件 tExtractJSONFields
【发布时间】:2015-03-27 14:06:04
【问题描述】:

我是 Talend 的初学者。 我尝试创建一个新作业,在其中通过 tREST 组件读取 JSON 数据。然后我想提取数据插入到 MySql 数据库中。

我的组件 tREST 以 JSON 格式向我提供以下数据(在 jsonlint 上验证)

{
"expand": "names,schema",
"startAt": 0,
"maxResults": 50,
"total": 1,
"issues": [
    {
        "expand": "editmeta,renderedFields,transitions,changelog,operations",
        "id": "97777",
        "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/issue/97777",
        "key": "MMMMMM-888",
        "fields": {
            "progress": {
                "progress": 7200,
                "total": 7200,
                "percent": 100
            },
            "summary": "Generate package for 88888888 1.0.3",
            "customfield_10083": "1_*:*_1_*:*_363000_*|*_10000_*:*_1_*:*_10000_*|*_5_*:*_1_*:*_0",
            "customfield_10082": null,
            "customfield_10360": null,
            "issuetype": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/issuetype/3",
                "id": "3",
                "description": "A task that needs to be done.",
                "iconUrl": "https://issuetracker.aaaaa.com/jira/images/icons/issuetypes/task.png",
                "name": "Task",
                "subtask": false
            },
            "customfield_10110": null,
            "customfield_10260": null,
            "customfield_10261": null,
            "resolution": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/resolution/1",
                "id": "1",
                "description": "A fix for this issue is checked into the tree and tested.",
                "name": "Fixed"
            },
            "fixVersions": [],
            "resolutiondate": "2014-12-05T17:24:01.000+0100",
            "timespent": 7200,
            "reporter": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/user?username=ext_aaaaaa_dupont",
                "name": "ext_aaaaaa_dupont",
                "emailAddress": "jpdupont@aaaaaa.fr ",
                "avatarUrls": {
                    "16x16": "https://issuetracker.aaaaa.com/jira/secure/useravatar?size=small&avatarId=10122",
                    "48x48": "https://issuetracker.aaaaa.com/jira/secure/useravatar?avatarId=10122"
                },
                "displayName": "Jean-Philippe Dupont",
                "active": true
            },
            "aggregatetimeoriginalestimate": null,
            "updated": "2014-12-05T17:24:01.000+0100",
            "created": "2014-12-05T17:17:48.000+0100",
            "description": null,
            "priority": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/priority/7",
                "iconUrl": "https://issuetracker.aaaaa.com/jira/images/icons/priority_normal.gif",
                "name": "Normal",
                "id": "7"
            },
            "customfield_10120": null,
            "duedate": null,
            "issuelinks": [],
            "watches": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/issue/MMMMMM-815/watchers",
                "watchCount": 0,
                "isWatching": false
            },
            "customfield_10101": "0",
            "subtasks": [],
            "customfield_10100": null,
            "status": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/status/5",
                "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.",
                "iconUrl": "https://issuetracker.aaaaa.com/jira/images/icons/statuses/resolved.png",
                "name": "Resolved",
                "id": "5"
            },
            "customfield_10090": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/customFieldOption/10071",
                "value": "Maintenance",
                "id": "10071"
            },
            "labels": [],
            "workratio": -1,
            "assignee": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/user?username=ext_aaaaaa_dupont",
                "name": "ext_aaaaaa_dupont",
                "emailAddress": "jpdupont@aaaaaa.fr ",
                "avatarUrls": {
                    "16x16": "https://issuetracker.aaaaa.com/jira/secure/useravatar?size=small&avatarId=10122",
                    "48x48": "https://issuetracker.aaaaa.com/jira/secure/useravatar?avatarId=10122"
                },
                "displayName": "Jean-Philippe Dupont",
                "active": true
            },
            "aggregatetimeestimate": 0,
            "project": {
                "self": "https://issuetracker.aaaaa.com/jira/rest/api/2/project/MMMMMM",
                "id": "10865",
                "key": "MMMMMM",
                "name": "Third Part Maintenance",
                "avatarUrls": {
                    "16x16": "https://issuetracker.aaaaa.com/jira/secure/projectavatar?size=small&pid=10865&avatarId=10299",
                    "48x48": "https://issuetracker.aaaaa.com/jira/secure/projectavatar?pid=10865&avatarId=10299"
                }
            },
            "versions": [],
            "customfield_10170": null,
            "environment": null,
            "timeestimate": 0,
            "aggregateprogress": {
                "progress": 7200,
                "total": 7200,
                "percent": 100
            },
            "lastViewed": null,
            "customfield_10464": null,
            "customfield_10463": null,
            "components": [],
            "customfield_10462": null,
            "timeoriginalestimate": null,
            "customfield_10461": null,
            "customfield_10460": null,
            "aggregatetimespent": 7200
        }
    }
]

}

我在tExtractJSONFields 组件上收到以下错误:

文档第 1 行出错:Le contenu des éléments doit inclure un balisage ou des caractères au format correct。嵌套异常:Le contenu des éléments doit inclure un balisage ou des caractères au format correct.

使用以下设置:

JSON Field : Body
Loop XPath Query : "/issues"
Mapping | Column | XPath query
    | id     |  "./id"

我看不出我的设置有什么问题...

【问题讨论】:

  • 你能把错误信息翻译成英文吗?

标签: json talend


【解决方案1】:
"16x16": "https://issuetracker.aaaaa.com/jira/secure/projectavatar?size=small&pid=10865&avatarId=10299",
                "48x48": "https://issuetracker.aaaaa.com/jira/secure/projectavatar?pid=10865&avatarId=10299"
            }

有些地方会出现这样的标签“16x16”和“48x48”。这些标签可能在 json 中有效,但在 xml 中无效,而在 talend 中的工作方式,json 将首先转换为 xml,然后再提取。然后这些标签在其 xml 格式中被视为无效并导致问题。

【讨论】:

    【解决方案2】:

    请在 TalendForge 的 JIRA 链接下方找到 tExtractJsonFields can't process Unicode

    tExtractJsonFields 在遇到无效 xml 字符时如何解析 Json 存在问题。他们在 5.6.2 版本中提供了 json-path,可以使用它来代替 Xpath 或者您可以在 Talend 中使用自定义 java 代码.这里是堆栈溢出的链接Json Parsing using custom routine in talend

    【讨论】:

      【解决方案3】:
      1. 检查输入行是否有 Body 作为 JSON 字段

      2. 将“循环 Xpath 查询”更改为“/issues[*]”

      3. 在tREST组件后添加一个tLogRow组件,只过滤Body,即屏蔽tREST组件生成并添加的ERROR_CODE。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-06
        • 2018-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多