Maison > Problème commun > le corps du texte

Qu'est-ce que l'analyse des données JSON

(*-*)浩
Libérer: 2020-09-19 11:09:33
original
6811 Les gens l'ont consulté

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.

Qu'est-ce que l'analyse des données JSON

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>Document;

typedef GenericValue>Value;

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(*this)[name];}

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]}
Copier après la connexion

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"
Copier après la connexion

Obtenir le chemin du fichier JSON via FileUtils

const char* file_path = FileUtils::getInstance()->fullPathForFilename("hello.json").c_str();
log("文件路径path=%s",file_path);
Copier après la connexion

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());
Copier après la connexion

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());
    } 
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal