Github JSONObject文本必须以';Talend作业中“xml版本=”1.0“编码=”UTF-8“?”的字符1处{&“x27”

Github JSONObject文本必须以';Talend作业中“xml版本=”1.0“编码=”UTF-8“?”的字符1处{&“x27”,github,talend,github-api,rest-client,Github,Talend,Github Api,Rest Client,我想通过这个talend工作从github获取数据, 但是我无法获取数据,因为它显示了一些错误 A JSONObject text must begin with '{' at character 1 of <?xml version="1.0" encoding="UTF-8"?> <root><root><id>75978949</id><name>Samplerepository</name> 我修改了

我想通过这个talend工作从github获取数据,

但是我无法获取数据,因为它显示了一些错误

A JSONObject text must begin with '{' at character 1 of <?xml version="1.0" encoding="UTF-8"?>
<root><root><id>75978949</id><name>Samplerepository</name>
我修改了作业,如,tRESTClient-->tFileOutputJSON和存储值,如下所示

[{"string":null,"body":
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <root>
        <id>59002981</id>
        <name>awesome-ciandcd</name>
        <full_name>sample/awesome-ciandcd</full_name>
        <owner>
            <login>sample</login>
            <id>354018</id>
        </owner>
        <private>false</private>
        <fork>true</fork>
        <forks_count>0</forks_count>
        <default_branch>master</default_branch>
    </root>
    <root>
        <id>35035177</id>
        <name>yell-adapters-gelf</name>
        <full_name>sample/yell-adapters-gelf</full_name>
        <owner>
            <login>sample</login>
            <id>354018</id>
        </owner>
        <private>false</private>
        <forks>0</forks>
        <open_issues>0</open_issues>
        <watchers>0</watchers>
        <default_branch>master</default_branch>
    </root>
</root>,"statusCode":200}]
[{“string”:null,“body”:
59002981
可怕的DCD
样本/DCD
样品
354018
假的
真的
0
主人
35035177
耶尔·盖尔夫
样本/呼叫适配器gelf
样品
354018
假的
0
0
0
主人
,“状态代码”:200}]
之后,创建了一个作业,tFileInputJSON-->textractJSonfiled-->tLogRow,但抛出的错误是:无法解析json文件:C:/Desktop/Output.json


如何处理这个问题?

它抛出错误,因为响应是一个JSON数组,而不是一个简单的JSON对象

您可以将响应存储到json文件中。使用tFileInputJSON读取该文件,然后使用tExtractJSONFields提取值

下面是示例作业(我使用了上面的示例数据)


[示例作业

,因为它不是JSONObject 这是一个JSONArray


TextRacJSonField组件中的Put循环路径查询

似乎API返回的是XML而不是JSON。我尝试使用tXMLMap而不是TextRacJSonfiled,但这也会引发错误,如HTTP 415不支持的媒体类型。但我提前添加了tRESTClient的内容类型设置。在我的帖子中,我添加了URL的输出值。这不是一种XML格式。将结果存储在json输出文件中后,像上面的示例一样尝试。但它引发了一个错误,无法解析json文件:C:/Desktop/output.jsoni如果我选择Read By as JsonPath With loop,则生成了一条记录。但我需要获取所有值。19个计数您是在一个JSONArray中获取19条记录还是在19个不同的JSONArray中获取19条记录JSONArray?在第二种情况下,您可以生成19个临时文件并对其进行迭代。在第一种情况下,您只需要更改查询。就像在tFileInputJSON中读取到jSONPath的更改一样,循环JSONquery可以是“$[*]”,jSONPath查询可以是“$”,TexractJSonfield中不需要更改。我有一个JSONArray,包含19条记录
[{"string":null,"body":
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <root>
        <id>59002981</id>
        <name>awesome-ciandcd</name>
        <full_name>sample/awesome-ciandcd</full_name>
        <owner>
            <login>sample</login>
            <id>354018</id>
        </owner>
        <private>false</private>
        <fork>true</fork>
        <forks_count>0</forks_count>
        <default_branch>master</default_branch>
    </root>
    <root>
        <id>35035177</id>
        <name>yell-adapters-gelf</name>
        <full_name>sample/yell-adapters-gelf</full_name>
        <owner>
            <login>sample</login>
            <id>354018</id>
        </owner>
        <private>false</private>
        <forks>0</forks>
        <open_issues>0</open_issues>
        <watchers>0</watchers>
        <default_branch>master</default_branch>
    </root>
</root>,"statusCode":200}]