Heim >häufiges Problem >Was ist JSON-Datenanalyse?

Was ist JSON-Datenanalyse?

(*-*)浩
(*-*)浩Original
2019-05-20 09:36:276850Durchsuche

Methode zum Parsen von JSON-Daten: Erstellen Sie zuerst eine JSON-Datei. Fügen Sie dann die Header-Dateien „document.h“ und „cocos-ext.h“ in die Klasse ein. Rufen Sie dann den JSON-Dateipfad über FileUtils ab und übergeben Sie ihn Das Dokumentobjekt analysiert JSON-Daten und erhält schließlich verschiedene Arten von Datenwerten.

Was ist JSON-Datenanalyse?

Daten müssen während der Netzwerkkommunikation übertragen werden. Der Prozess der JOSN-Datenanalyse ist: Erstellen Sie zuerst eine JSON-Datei und fügen Sie dann document.h und cocos ein. ext.h-Headerdatei, rufen Sie dann den JSON-Dateipfad über FileUtils ab, analysieren Sie die JSON-Daten über das Document-Objekt und erhalten Sie schließlich verschiedene Arten von Datenwerten.

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat. Es erleichtert Menschen das Lesen und Schreiben und erleichtert Maschinen das Parsen und Generieren. JSON verwendet ein Textformat, das völlig unabhängig von Programmiersprachen ist, nutzt aber auch C-ähnliche Sprachgewohnheiten (einschließlich C, C++, C#, Java, JavaScript, Perl und Python usw.). Diese Eigenschaften machen JSON zu einer idealen Datenaustauschsprache .

JSON-Datenanalyse

Zum Beispiel gibt es im Verzeichnis external/json im Stammverzeichnis von Cocos2d.x Klassen, die sich auf die JSON-Verarbeitung beziehen: document.h Der Header wird hier hauptsächlich verwendet. Die beiden Kernklassen in dieser Datei sind GenericValue und GenericDocument. GenericDocument wird zum Verarbeiten von Dokumentinhalten verwendet, z. B. zum Parsen von Dokumentinhalten. GenericValue verarbeitet hauptsächlich Wertinhalte, dh den Inhalt von Schlüssel-Wert-Paaren innerhalb des Dokuments, und der Wert kann basierend auf dem Schlüssel abgerufen werden. Sowohl GenericValue als auch GenericDocument wurden neu eingegeben. Sie können den Namen also nach der Typdefinition verwenden.

ypedef GenericDocument>Document;

typedef GenericValue>Value;

Value überlädt den Array-Indexoperator [ ], also Mit diesem Operator können wir den Wert basierend auf dem Schlüssel in der JSON-Datei abrufen.

const GenericValue & Operator [] (const Ch* name) const{

const_cast(*this)[name];}

Value stellt auch eine Gruppe bereit GetXXX-Methode zum Abrufen entsprechender Werte für verschiedene Datentypen.

Demonstrieren Sie anhand eines Beispiels, wie JSON-Daten analysiert werden. Die Schritte sind wie folgt:

Erstellen Sie eine JSON-Datei

Erstellen Sie im Projekt eine JSON-Datei im Klassenordner mit folgendem Inhalt:

{"pets":["dog","cat"],"stuInfo":{
"stuAge":23,"stuName":"rose","birthday":"1990-01-12"},"username","tom","other":[true,30]}

In dieser Datei ist pets ein Array, das Haustiere darstellt, mit zwei Werten dog und pet; stuInfo ist ein Student information; gefolgt von einem usename ; Schließlich gibt es noch ein weiteres Array.

Header-Dateien document.h und cocos-ext.h in die Klasse einbeziehen

#include "cocos-ext.h"
#include "json/document.h"

Den JSON-Dateipfad über FileUtils abrufen

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

JOSN-Daten über das Dokumentobjekt analysieren

//文档对象
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());

Verschiedene Arten von Datenwerten erhalten

Verwenden Sie den Array-Indexoperator [], um den Wert gemäß dem Schlüssel zu erhalten. und verwenden Sie GetXXX of Value-Methoden, um verschiedene Arten von Datenwerten abzurufen.

//获取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());
    } 
}

Das obige ist der detaillierte Inhalt vonWas ist JSON-Datenanalyse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist Bi?Nächster Artikel:Was ist Bi?