IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

[Ocaml] [JSON] conversion


Sujet :

Caml

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut [Ocaml] [JSON] conversion
    Bonjour,

    je voudrais imprimer des données au format Json. J'ai vu qu'il existait plusieurs librairies pour faire ce genre de conversions et j'aurais aimé un avis de personne ayant déjà utilisé quelque chose s'en rapprochant pour savoir comment m'y prendre.

    Ce que j'ai :
    une liste de personnes et à chaque personne est associée une liste de conjoints.

    Ce que je voudrais en sortie :
    un tableau de personne et à chaque personne est associé un tableau de conjoints (au format Json donc).

    C'est pas vraiment compliqué dans l'absolu.

    Ma contrainte et qu'il faut que ça fonctionne en camlp5 (pas le 4). Grosso modo, les lib que j'ai vu sont de Martin J. mais j'ai l'impression que c'est un peu de l'artillerie lourde pour pas grand chose.

    Auriez vous des conseils ?

    Merci


    PS:

    j'ai trouvé ça aussi, qui me parrait pas mal, mais je me demande si c'est pas le package deprecated ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    type json item =
      < name    "Name": string;
        kingdom "Kingdom": string;
        phylum  "Phylum": string;
        class_  "Class": string;
        order   "Order": string;
        family  "Family": string;
        tribe   "Tribe": string
      >
     
    let str = "
      {
        \"Name\":    \"camel\",
        \"Kingdom\": \"Animalia\",
        \"Phylum\":  \"Chordata\",
        \"Class\":   \"Mammalia\",
        \"Order\":   \"Artiodactyla\",
        \"Family\":  \"Camelidae\",
        \"Tribe\":   \"Camelini\"
      }"
     
    let () =
      let j = Json_io.json_of_string str in
      print_endline (Json_io.string_of_json j);

  2. #2
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    As-tu regardé ocaml-jason ? Je ne sais pas ce que ça vaut mais l'interface est très simple et pourrait correspondre à ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    type jsontype =
      |  Bool of bool
      | Int of int
      | Float of float
      | String of string
      | Object of (string, jsontype) Hashtbl.t
      | Array of jsontype array
      | Null
    
    exception Eof
    
    val serialize : jsontype -> string
    val deserialize : string -> jsontype
    Attention je n'ai jamais utilisé cette lib !

    Cordialement,
    Cacophrène

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Cacophrene Voir le message
    Bonsoir,

    As-tu regardé ocaml-jason ? Je ne sais pas ce que ça vaut mais l'interface est très simple et pourrait correspondre à ce que tu veux :
    Attention je n'ai jamais utilisé cette lib !
    Merci je n'étais pas tombé sur ce lien.

    Si quelqu'un a un retour dessus...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    camlp{4,5} servent soit à manipuler des objets JSON avec une syntaxe proche de la vraie syntaxe JSON, soit à générer automatiquement des convertisseurs vers et depuis JSON à partir d'une définition de types. Puisque tu n'as aucun de ces besoins, tu n'as pas besoin d'utiliser une bibliothèque liée à un préprocesseur, et si tu le fais tu n'as pas besoin d'utiliser leur partie liée au préprocesseur (donc tu peux prendre une lib pensée pour Camlp4, ne pas utiliser le préprocesseur mais la bibliothèque logicielle sous-jacente, ce qui serait compatible avec ton utilisation de camlp5).

    Bref, te prends pas la tête avec les préprocesseurs.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par gasche Voir le message
    camlp{4,5} servent soit à manipuler des objets JSON avec une syntaxe proche de la vraie syntaxe JSON, soit à générer automatiquement des convertisseurs vers et depuis JSON à partir d'une définition de types. Puisque tu n'as aucun de ces besoins, tu n'as pas besoin d'utiliser une bibliothèque liée à un préprocesseur, et si tu le fais tu n'as pas besoin d'utiliser leur partie liée au préprocesseur (donc tu peux prendre une lib pensée pour Camlp4, ne pas utiliser le préprocesseur mais la bibliothèque logicielle sous-jacente, ce qui serait compatible avec ton utilisation de camlp5).

    Bref, te prends pas la tête avec les préprocesseurs.
    Merci pour cette réponse !

    Est-ce que je peux me permettre de creuser un peu la question. Selon toi (ou d'autres qui ont un avis), vu la limite de mes besoins (j'ai même pas besoin d'avoir toute la syntaxe JSON), serait il mieux de me faire mon propre module avec mes type pour manipuler du JSON ou bien liée une bibliothèque qui existe (comme par exemple json_wheel) ?

    Chacun a ses avantages bien sûr...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Si tu trouves une lib qui propose déjà un type caml correspondant à JSon, des fonctions de marshalling (lecture/écriture) pour ce type, et des facilités pour convertir entre des types utilisateurs quelconques et ce type, je ne vois pas de raison de ne pas en profiter; c'est beaucoup plus agréable, facile et sûr d'écrire de ton côté un convertisseur "mon type algébrique -> leur type algébrique" que de printer et parser à la main.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    En fait tu as tout a fait raison.

    Merci pour vos analyses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur conversion données au format JSON
    Par lekonquerant dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 07/11/2014, 11h44
  2. Mauvaise conversion JSON PHP > Java
    Par Njörd dans le forum Services Web
    Réponses: 4
    Dernier message: 19/01/2013, 10h01
  3. Conversion JSON vers XML
    Par jeedev dans le forum Objective-C
    Réponses: 0
    Dernier message: 20/10/2012, 17h01
  4. Conversion tableau PHP -> JSON
    Par Anduriel dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2012, 11h27
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo