Contribuer

Infos Contribution

Suivre
1 suiveur

Statistiques

Envoyé : 2017-08-10 10:01:39 -0500

Vu : 39 fois

Dernière mise à jour : 2017-08-10 14:35:25 -0500

0

Sources de données: exploitation JSON externe

envoyé 2017-08-10 10:01:39 -0500

Image Gravatar de jromani

Bonjour,

Un format est attendu pour utiliser le json comme source de données (id,text,...).

Mais comment exploiter un json distant, dans un formulaire, dont on ne peut modifier la structure ?

Exemple:

https://data.toulouse-metropole.fr/ex...

https://jsonplaceholder.typicode.com/...

Merci

modifier requalifier fermer Supprimer

1 réponse

Filtrer les contributions : anciennes récentes populaires
0

répondue 2017-08-10 10:25:56 -0500

Entr'ouvert

Pour alimenter une liste à partir d'une source de données dont le format n'est pas celui attendu il faut passer par un connecteur faisant la conversion; ça peut être fait à l'extérieur de Publik ou dans Publik en créant un connecteur adapté dans Passerelle.

https://doc-publik.entrouvert.com/tec... contient la documentation sur le développement de connecteurs dans Passerelle.

Pour prendre l'exemple "dépôts TIM", un connecteur très basique permettant de choisir un dépôt pourrait ressembler à ceci :

URL = "https://data.toulouse-metropole.fr/api/records/1.0/search/?dataset=listing_depots_tim&facet=commune&facet=type&facet=sous_type"

class ListingDepotsTim(BaseResource):
    class Meta:
        verbose_name = "Dépôts TIM"

     @endpoint()
     def list(self, request):
         data = []
         for entry in self.requests.get(URL).json()['records']:
             data.append({'id': entry['recordid'], 'text': entry['fields']['lieux'], 'extra': entry})
         return {'data': data}

Ça convertit le recordid en id, prend l'attribut "lieux" comme libellé et conserve l'ensemble des données dans une clé "extra" pour qu'ils puissent être exploités dans une suite de workflow.

De cet exemple attaché à un cas précis, il y aurait ensuite moyen d'évoluer pour rendre paramétrable les éléments constitutifs de l'URL (dataset, facet, etc.), les éléments à tirer comme "id" et "text", d'ajouter des notions de cache, etc.

Par ailleurs, pour des usages qui relèveraient plutôt de l'affichage de l'information au niveau d'un portail, par exemple, on n'a pas encore de documentation générale mais je viens de mettre en ligne https://perso.entrouvert.org/~fred/ce... qui n'est pas tout à fait générique mais devrait pouvoir donner un aperçu utile.

modifier Supprimer publié plus

Commentaires

Merci beaucoup pour ces explications.claires et précises.

jromani ( 2017-08-11 04:05:46 -0500 )modifier
S'identifier/S'inscrire pour répondre