Maison >Problème commun >Qu'est-ce que l'analyse des données JSON
Méthode d'analyse des données json : créez d'abord un fichier JSON ; puis incluez les fichiers d'en-tête "document.h" et "cocos-ext.h" dans la classe, puis obtenez le chemin du fichier JSON via FileUtils et transmettez-le. l'objet Document Analyse les données JSON ; obtient enfin différents types de valeurs de données.
Les données doivent être transmises pendant la communication réseau. Le processus d'analyse des données JOSN est le suivant : créez d'abord un fichier JSON, puis incluez document.h et cocos-. dans le fichier d'en-tête class.ext.h, puis obtenez le chemin du fichier JSON via FileUtils, analysez les données JSON via l'objet Document et enfin obtenez différents types de valeurs de données.
JSON (JavaScript Object Notation) est un format léger d'échange de données. Cela facilite la lecture et l’écriture pour les gens, et facilite également l’analyse et la génération des machines. JSON utilise un format de texte totalement indépendant des langages de programmation, mais utilise également des habitudes de langage de type C (notamment C, C++, C#, Java, JavaScript, Perl et Python, etc.). Ces caractéristiques font de JSON un langage d'échange de données idéal. .
Analyse des données JSON
Par exemple, sous le répertoire external/json du répertoire racine Cocos2d.x, il existe des classes liées au traitement JSON Le document.h. l'en-tête est principalement utilisé ici. Les deux classes principales de ce fichier sont GenericValue et GenericDocument hérite de GeneficValue. GenericDocument est utilisé pour traiter le contenu du document, tel que l'analyse du contenu du document ; GenericValue traite principalement le contenu de la valeur, c'est-à-dire le contenu de la paire clé-valeur à l'intérieur du document, et la valeur peut être obtenue en fonction de la clé. GenericValue et GenericDocument ont été retapés. Vous pouvez donc utiliser le nom après la définition du type.
ypedef GenericDocument
typedef GenericValue
La valeur surcharge l'opérateur d'indice du tableau [ ], donc nous pouvons utiliser cet opérateur pour obtenir la valeur basée sur la clé dans le fichier JSON.
const GenericValue & Operator [] (const Ch* name) const{
const_cast
Value fournit également un groupe Méthode GetXXX pour obtenir les valeurs correspondantes selon différents types de données.
Montrez comment analyser les données JSON à travers un exemple. Les étapes sont les suivantes :
Créez un fichier JSON
Dans le projet Créez un fichier JSON sous le dossier classes avec le contenu suivant :
{"pets":["dog","cat"],"stuInfo":{ "stuAge":23,"stuName":"rose","birthday":"1990-01-12"},"username","tom","other":[true,30]}
Dans ce fichier, pets est un tableau représentant les animaux de compagnie, avec deux valeurs dog et pet stuInfo est un étudiant ; information; suivi d'un nom d'utilisateur ; Enfin, il existe un autre tableau.
Inclure les fichiers d'en-tête document.h et cocos-ext.h dans la classe
#include "cocos-ext.h" #include "json/document.h"
Obtenir le chemin du fichier JSON via FileUtils
const char* file_path = FileUtils::getInstance()->fullPathForFilename("hello.json").c_str(); log("文件路径path=%s",file_path);
Analyser les données JOSN via l'objet Document
//文档对象 rapidjson::Document dl; //获得JSON字符串内容 std::string contentStr = FileUtils::getInstance()->getStringFromFile(file_path); //解析 dl.Parse<0>(contentStr.c_str()); //输出JSON文件的内容 printf("%s\n",contentStr.c_str());
Obtenir différents types de valeurs de données
Utilisez l'opérateur d'indice de tableau [] pour obtenir la valeur en fonction de la clé, et utilisez GetXXX des méthodes de valeur pour obtenir différents types de valeurs de données.
//获取JSON中数组的方法(宠物数组)[dog,cat] const rapidjson::Value & v=d1["pets"]; for(unsigned int i=0;i<v.Size();++i){ const rapidjson::Value & val=v[i]; log("%s",val.GetString()); } //根据key获得value(学生信息)"stuInfo":{"stuAge":23,"stuName":"rose","birthday":"1990-01-12"} const rapidjson::Value & v2=d1["stuInfo"]; //获得整型值 const rapidjson::Value&val1 = v2["stuAge"]; log("val.GetString()=%d",vall.GetInt()); //获得字符串值 const rapidjson::Value&val2 = v2["stuName"]; log("val.GetString()=%s",val2.GetString()); //获得字符串值 const rapidjson::Value&val3 = v2["birthday"]; log("val.GetString()=%s",val3.GetString()); //根据key获得value(other)"other":[true,30] const rapidjson::Value&v3=d1["other"]; for(unsigned int i=0;i<v3.Size();++i){ const rapidjson::Value&val=v3[i]; if(val.IsBool()){ log("%d",val.GetBool()); } if(val.IsInt()){ log("%d",val.GetInt()); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!