Je travaille avec JSON pour la première fois, alors excusez mon manque de connaissances.
J'essaie d'utiliser un fichier JSON pour remplir des données dans une feuille Google. Je ne connais tout simplement pas la bonne syntaxe. Comment puis-je formater une fonction JSON pour accéder correctement aux données et arrêter de renvoyer une erreur?
J'essaye d'extraire des données d'ici:
https://eddb.io/archive/v6/bodies_recently.jsonl
dans un fichier Google Sheets.
J'ai chargé le script ImportJSON et je l'ai testé avec un très petit fichier JSON ( http://date.jsontest.com/ ) et cela fonctionne comme annoncé, en utilisant cette fonction:
name id type_name rotational_period, etc.
Cependant, lorsque j'essaye d'utiliser le même fonction avec le JSON d'eddb.io ci-dessus, je ne peux pas le faire fonctionner.
Ce que je voudrais faire est de tirer le "nom" dans A1 puis quelques-uns des attributs dans les colonnes, comme ça:
=ImportJSON("http://date.jsontest.com", "/date")
Voici un lien vers mes tests: https://docs.heogleets.com/dsprer 1gCKpLcf-ytbPNcuQIIzxp1RMy7N5K8pD02hCLnL27qQ / edit? Usp = partage
3 Réponses :
Je ne suis pas avec mon ordinateur portable, mais je vois que vous obtenez l'erreur SyntaxError: Fin prévue du flux à char 2028 (ligne 132)
.
Je pense que les données que vous avez reçues de l'URL sont trop longues.
Merci. Le json peut également être mal formé. J'ai essayé de mettre le fichier dans ceci: jsoneditoronline.org et il renvoie des erreurs.
La charge utile des données est au format JSON Lines, qui est distinct du JSON pur.
Et cette solution de contournement?
Quand j'ai vu l'URL de https://eddb.io/archive/v6/bodies_recently.jsonl
, J'ai remarqué que l'extension du fichier est jsonl
. Ainsi, lorsque j'ai vérifié les valeurs extraites de https://eddb.io/archive/v6/bodies_recently.jsonl
, il a été constaté que les valeurs étaient des lignes JSON. Cela a déjà été mentionné dans le commentaire de Dimu Designs . Je pourrais également confirmer que le document officiel indique que body_recently.jsonl
est JSON délimité par des lignes.
Malheureusement, ImportJSON ne peut pas analyser directement les valeurs de Lignes JSON. Il est donc nécessaire de modifier le script comme solution de contournement. Dans votre feuille de calcul partagée, le script ImportJSON est placé en tant que script lié au conteneur. Dans cette modification, j'ai modifié le script. Veuillez modifier comme suit.
La fonction suivante est visible sur la ligne 130 - 135 dans votre éditeur de script.
function ImportJSONAdvanced(url, query, options, includeFunc, transformFunc) { var jsondata = UrlFetchApp.fetch(url); var object = jsondata.getContentText().match(/{[\w\s\S].+}/g).map(function(e) {return JSON.parse(e)}); // Modified return parseJSONObject_(object, query, options, includeFunc, transformFunc); }
https://eddb.io/archive/v6/bodies_recently.jsonl
, je ne suis pas sûr que ce script modifié fonctionne pour toutes les valeurs de lignes JSON . Je m'en excuse. Si j'ai mal compris votre question et que ce n'est pas le résultat souhaité, je m'en excuse.
Je suppose que le deuxième json contient des listes et ne peut pas être converti en feuille
Vous faites référence à github.com/bradjasper/ImportJSON/blob/master/ImportJSON. gs