Parse JSON ou XML

Bonjour tout le monde,

 

J'ai une petite question, comment dois-je procéder pour lier mon app avec un Fichier Json ou XML contenant mes éléments de recherche ?

 

Comment doit être constitué le fichier JSON OU XML pour faire le minimum de modification dans mon code. 

 

J'ai trop de données à  gérer entre les recherches et les quiz, une erreur est vite arrivée.

 

 

Exemple de donner a récupérer :

 



let techniques = [Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),

Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),
Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),

Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),
Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),

Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),
Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),

Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1")),
Technique(nom: "Tchaliot Seugui Kyongnye", nomPosition: "TEXTE" image: UIImage(named: "back1"))
]

Comme ceci ? (XML)



<?xml version="1.0"?>
<List>
<Technique>
<nom>texte</nom>
<nomPosition>texte</nomPosition>
<deplacement>texte</deplacement>
<armement>texte</armement>
<realisation>texte</realisation>
<definition>texte</definition>
<imageNamed>texte</imageNamed>
</Technique>
<Technique>
<nom>texte</nom>
<nomPosition>texte</nomPosition>
<deplacement>texte</deplacement>
<armement>texte</armement>
<realisation>texte</realisation>
<definition>texte</definition>
<imageNamed>texte</imageNamed>
</Technique>
<Technique>
<nom>texte</nom>
<nomPosition>texte</nomPosition>
<deplacement>texte</deplacement>
<armement>texte</armement>
<realisation>texte</realisation>
<definition>texte</definition>
<imageNamed>texte</imageNamed>
</Technique>

</List>


 


Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur

    Le JSON est moins volumineux et plus facile à  traiter.

  • Pareil.

    Le JSON est bien plus facile à  traiter de mon point de vue.



  • Pareil.

    Le JSON est bien plus facile à  traiter de mon point de vue.




     


    J'avoue pas bien comprendre loool

    Dans mon autre post, tu me conseilles le plist que j'avais faussement assimilé au XML.

    Sur le net, je trouve plus de tuto sur le parse JSON que plist ou XML. Du coup, je pense essayer avec le JSON même si niveau structure, je le trouve moins clair que les deux autres formats.


     


    Comme ceci ??



    {
    "Technique": [{
    "nom": "Tchalio",
    "nomPosition": "Tchaliot Seugui Kyongnye",
    "deplacement": "Bla-Bla",
    "armement": "Bla-Bla",
    "definition": "Bla-Bla",
    "image": "back1"
    }, {
    "nom": "Tchalio",
    "nomPosition": "Seugui Kyongnye",
    "deplacement": "Bla-Bla",
    "armement": "Bla-Bla",
    "definition": "Bla-Bla",
    "image": "back2"
    }]
    }

    ??


  • Le JSON est moins volumineux et plus facile à  traiter.




     


    Merci également pour ta réponse. Pense tu également que ce soit possible pour les questions réponses d'un quiz


     


    Plutôt comme ça ?



    <questions>

    <question option1='Monkeys!' option2='Costumes' option3='Computers' answer="Flash Files" image='' sound=''>What does Activeden sell?</question>


    <question option1='Club of 8s' option2='8 of Plant' option3='8 of Spades' answer="Eight of Clubs" image='c8.png' sound=''>What is the name of this Card?</question>


    <question option1='Guitar' option2='Koala Bear' option3='Alarm Clock' answer="Phone Ring" image='' sound='Phone.mp3'>What is this sound?</question>

    </questions>

     Ou comme Ceci ?



    <question>
    <questionText>Who is the author of this column?</questionText>
    <incorrect>Pat McClellan</incorrect>
    <incorrect>Darrel Plant</incorrect>
    <incorrect>Gary Rozensweig</incorrect>
    <correct>Will Turnage</correct>
    </question>


  •  


    J'avoue pas bien comprendre loool

    Dans mon autre post, tu me conseilles le plist que j'avais faussement assimilé au XML.

    Sur le net, je trouve plus de tuto sur le parse JSON que plist ou XML. Du coup, je pense essayer avec le JSON même si niveau structure, je le trouve moins clair que les deux autres formats.




     


     


    Alors :


    Dans ton autre post, ce n'était pas clair si tu voulais que ce fichier soit uniquement dans ton bundle de départ et n'avais jamais besoin d'être mis à  jour.


    Tu as ensuite parlé d'une update via serveur. Quand on parle de serveur, je préconise dès lors d'utiliser du JSON, je trouve cela bien plus simple et moins lourd comparé à  du XML. L'idée du plist via serveur, cela revient à  retélécharger un fichier complet, et vu que c'est un XML particulier, c'est assez verbeux, d'où ma préférence pour le JSON du coup.


     


    Ton JSON semble correct sinon.


     


    La structure est simple pour celui qui la connait.


    Un JSON, avec des termes d'Objective-C, c'est un NSDictionary ou un NSArray at top level, et ensuite, c'est uniquement des NSDictionary, NSArray, NSString ou NSNumber.


    Une fois que tu sais que tu es limité à  ça, je suppose que trouver ce qui est NSString et NSNumber, c'est facile. Il ne te reste plus qu'à  trouver la différence entre NSArray et NSDictionary à  la lecture visuelle, et vu que le NSDictionary fonctionne avec un système de clé, qui en général est un NSString, c'est assez facile.



  • Alors :


    Dans ton autre post, ce n'était pas clair si tu voulais que ce fichier soit uniquement dans ton bundle de départ et n'avais jamais besoin d'être mis à  jour.


    Tu as ensuite parlé d'une update via serveur. Quand on parle de serveur, je préconise dès lors d'utiliser du JSON, je trouve cela bien plus simple et moins lourd comparé à  du XML. L'idée du plist via serveur, cela revient à  retélécharger un fichier complet, et vu que c'est un XML particulier, c'est assez verbeux, d'où ma préférence pour le JSON du coup.


     


    Ton JSON semble correct sinon.


     


    La structure est simple pour celui qui la connait.


    Un JSON, avec des termes d'Objective-C, c'est un NSDictionary ou un NSArray at top level, et ensuite, c'est uniquement des NSDictionary, NSArray, NSString ou NSNumber.


    Une fois que tu sais que tu es limité à  ça, je suppose que trouver ce qui est NSString et NSNumber, c'est facile. Il ne te reste plus qu'à  trouver la différence entre NSArray et NSDictionary à  la lecture visuelle, et vu que le NSDictionary fonctionne avec un système de clé, qui en général est un NSString, c'est assez facile.




     


    Merci beaucoup pour ta réponse. Je recherche ça

  • J'ai fais un test avec ce code que j'arrive bien a récupérer.



    {
    "Quiz": [{
    "Questions_Officielles": {
    "qo1":{
    "question": "Questions Officielles 1 ? ",
    "options": [

    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": "Reponse 4"
    },

    "qo2":{
    "question": "Questions Officielles 2 ? ",
    "options": [
    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": "Reponse 4"
    },

    "qo3":{
    "question": "Questions Officielles 3 ? ",
    "options": [
    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": "Reponse 4"
    },
    "qo4":{
    "question": "Questions Officielles 4 ? ",
    "options": [

    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": "Reponse 4"
    }

    }
    }]
    }

    Mais je n'arrive pas à  structurer correctement pour correspondre à  mon quiz.

    Dans ce dernier, j'utilise 5 arrays (1 pour les questions, 1 pour les bonnes réponses et 3 pour les mauvaises réponses

    Je me demande si c'est la meilleure façon de faire finalement ?

  • RistrettoRistretto Membre
    avril 2017 modifié #9





    Mais je n'arrive pas à  structurer correctement pour correspondre à  mon quiz.

    Dans ce dernier, j'utilise 5 arrays (1 pour les questions, 1 pour les bonnes réponses et 3 pour les mauvaises réponses

    Je me demande si c'est la meilleure façon de faire finalement ?




     


    Bonsoir,


     


    Je ne répondrai pas sur l'aspect xml, json, etc...


     


    En revanche, sur la structuration des données : auras-tu toujours 3 mauvaises réponses ? ou veux-tu te donner de la flexibilité pour plus tard ? Dans ce cas, une possibilité est de définir les mauvaises réponses comme un Array (d'au moins une valeur) contenant toutes les mauvaises réponses. A gérer ensuite, pour traiter le nombre de réponses dans le Array.


     


    Cordialement,


    Nicolas




  • Bonsoir,


     


    Je ne répondrai pas sur l'aspect xml, json, etc...


     


    En revanche, sur la structuration des données : auras-tu toujours 3 mauvaises réponses ? ou veux-tu te donner de la flexibilité pour plus tard ? Dans ce cas, une possibilité est de définir les mauvaises réponses comme un Array (d'au moins une valeur) contenant toutes les mauvaises réponses. A gérer ensuite, pour traiter le nombre de réponses dans le Array.


     


    Cordialement,


    Nicolas




     


    Bah en faite, simplement parceque c'est le moyen que j'ai trouver pour faire des question a 4 choix

  • CéroceCéroce Membre, Modérateur
    Ce qu'il veut dire est que tu as fait de "Questions_Officielles" un dictionnaire, alors qu'une liste aurait été plus pertinente.
    Pour la réponse, tu pourrais ne mettre que l'indice.
    Et puis tu pourrais aussi retirer un niveau hiérarchique.


    { "Questions_Officielles": [
    {
    "question": "Questions Officielles 1 ? ",
    "options": [
    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": 3
    },

    {
    "question": "Questions Officielles 2 ? ",
    "options": [
    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": 3
    },

    {
    "question": "Questions Officielles 3 ? ",
    "options": [
    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": 3
    },

    {
    "question": "Questions Officielles 4 ? ",
    "options": [

    "Reponse 1",
    "Reponse 2",
    "Reponse 3",
    "Reponse 4"
    ],
    "answer": 3
    }
    ]
    }
Connectez-vous ou Inscrivez-vous pour répondre.