2017-08-02 2 views
-1

J'essaie d'obtenir des données de github avec ce travail talend, enter image description hereenter image description hereUn texte JSONObject doit commencer par '{' au caractère 1 de <? Xml version = "1.0" encoding = "UTF-8"?> Dans Talend Job

Mais je n'ai pas pu obtenir les données, car il montre une erreur.

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> 

Comment puis-je résoudre ce problème?

Ceci est ma valeur de sortie, lorsque j'ai testé l'URL avec le navigateur;

[ 
    { 
    "id": 59002981, 
    "name": "awesome-ciandcd", 
    "full_name": "sample/awesome-ciandcd", 
    "owner": { 
     "login": "sample", 
     "id": 354018, 
     "avatar_url": "https://avatars1.githubusercontent.com/u/354018?v=4" 

    }, 
    "private": false, 
    "html_url": "https://github.com/sample/awesome-ciandcd", 
    "description": "continuous integration and continuous delivery", 
    "fork": true, 
    "mirror_url": null, 
    "open_issues_count": 0, 
    "forks": 0, 
    "open_issues": 0, 
    "watchers": 2, 
    "default_branch": "master" 
    } 
] 

J'ai modifié le travail comme, tRESTClient -> tFileOutputJSON et valeur stockée comme ci-dessous,

[{"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}] 

Après cela, a créé un emploi, tFileInputJSON -> tExtractJSONFileds -> tLogRow, mais il est l'erreur de jeter est: ne parviennent pas à analyser le fichier JSON: C: /Desktop/Output.json

Comment gérer t son problème?

+0

On dirait que l'API renvoie XML et pas JSON. –

+0

J'ai essayé avec tXMLMap à la place de tExtracJSONFileds, mais aussi avec une erreur de lancement comme, HTTP 415 Unsupported Media Type. Mais j'ai ajouté le type de contenu dans les paramètres d'avance de tRESTClient. – user3114967

+0

Dans mon message j'ai ajouté la valeur de sortie de l'URL. Ce n'est pas un format XML. – user3114967

Répondre

1

L'erreur est lancée car la réponse est un tableau JSON et non un simple objet json.

Vous pouvez stocker la réponse dans un fichier json. Lisez le fichier en utilisant tFileInputJSON, puis vous pouvez extraire les valeurs à l'aide de tExtractJSONFields.

ci-dessous est le travail de l'échantillon (je l'ai utilisé ci-dessus les données de l'échantillon)

sample job

[échantillon travail ][1]

+0

Après stocker le résultat dans le fichier de sortie json, essayé comme exemple ci-dessus. Mais il lance une erreur, ne parvient pas à analyser le fichier json: C: /Desktop/Output.json – user3114967

+0

Si j'ai choisi Read By comme JsonPath sans boucle, un enregistrement a été généré. Mais j'ai besoin de toutes les valeurs. 19 chefs – user3114967

+0

obtenez-vous 19 enregistrements dans un JSONArray ou 19 JSONArray différent? –

0

Parce que ce ne est pas un JSONObject Son un JSONArray

chemin en boucle Put requête dans le composant tExtractJsonfield