Je vais vous proposer 2 façons de lire et écrire du JSON en C++. La première méthode utilise l'API cascade avec la classe JsonDataAccess. La seconde, est une methode perso, que je prefère, car elle depend uniquement de Qt, et permet donc d'être réutilisé ailleurs.
Avec ces 2 méthodes, le code JSON sera convertit en QVariant en respectant les types suivant :
Et n'oubliez pas d'inclure le header et d'utiliser le namespace.
#include <bb/data/JsonDataAccess>
using namespace bb::data;
qml->setContextProperty("myData",data);
Avec ces 2 méthodes, le code JSON sera convertit en QVariant en respectant les types suivant :
JSON Type QT Type --------- ----------------- null empty QVariant int QVariant(Int64) uint QVariant(UInt64) real QVariant(double) string QVariant(const char*) boolean QVariant(bool) array QVariant(QVariantList) object QVariant(QVariantMap)
Voyons maintenant, comment parser le code suivant :
Methode JsonDataAccess :
Pour être utiliser, la classe JsonDataAccess nécessite la librairie -lbbdata. Donc depuis votre fichier *.pro, ajouter LIBS += -lbbdataEt n'oubliez pas d'inclure le header et d'utiliser le namespace.
#include <bb/data/JsonDataAccess>
using namespace bb::data;
Et pour récupérer votre QVariant :
Methode QxtJson :
Qxt est une librairie tierce sous licence LGPL 2.1. Je vous rassure, je ne vais pas vous demander de linker cette librairie. Télécharger juste ces deux fichiers et ajoutez les à votre projet :
Maintenant, grâce à qxtjson, vous allez pouvoir parser et écrire du json en 1 ligne :
Astuce ou la magie de QML:
Vous avez vos datas sous forme d'un QVariant. Vous voulez maintenant les afficher dans votre page Qml. Plutôt que de créer des fonctions d'appel C++, nous allons directement envoyer notre QVariant au contexte qml, qui s'occupera de les transformer en tableau javascript.
qml->setContextProperty("myData",data);
Et depuis QML, accedé à vos données en faisant simplement :
Label { text: myData.name }
Aucun commentaire:
Enregistrer un commentaire