JSON-Verarbeitungsmethoden und Implementierung in C++
JSON ist ein leichtes Datenaustauschformat, das leicht zu lesen und zu schreiben ist und von Maschinen leicht analysiert und generiert werden kann. Die Verwendung des JSON-Formats erleichtert die Datenübertragung zwischen verschiedenen Systemen. In C++ gibt es viele Open-Source-JSON-Bibliotheken für die JSON-Verarbeitung. In diesem Artikel werden einige häufig verwendete JSON-Verarbeitungsmethoden und -Implementierungen in C++ vorgestellt.
JSON-Verarbeitungsmethoden in C++
- RapidJSON
RapidJSON ist ein schneller C++-JSON-Parser/Generator, der DOM-, SAX- und Speicherpool-APIs bereitstellt. Seine Hauptmerkmale sind wie folgt:
- Geringer Speicherbedarf und schnelle Ausführungsgeschwindigkeit;
- Unterstützt UTF-8, UTF-16, UTF-32 und andere Codierungsformate;
- Unterstützt die Verschiebungssematik von C++11, wodurch Speicher entsteht Effizientere Verwaltung;
- unterstützt eine SAX-API, die große JSON-Dateien effizient analysieren kann;
- unterstützt benutzerdefinierte Zuordnungsstrategien (Allokator).
In RapidJSON können JSON-Objekte über DOM und SAX analysiert werden, und die DOM-Methode kann über die Value-Klasse implementiert werden. Das Folgende ist ein Beispielcode, der RapidJSON zum Generieren und Analysieren von JSON verwendet:
#include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" #include <iostream> using namespace rapidjson; using namespace std; int main() { // 生成JSON StringBuffer s; Writer<StringBuffer> writer(s); writer.StartObject(); writer.Key("name"); writer.String("Tom"); writer.Key("age"); writer.Int(20); writer.EndObject(); // 解析JSON Document d; d.Parse(s.GetString()); cout << "name: " << d["name"].GetString() << endl; cout << "age: " << d["age"].GetInt() << endl; return 0; }
- Boost.PropertyTree
Boost.PropertyTree ist eine einfache und benutzerfreundliche Eigenschaftsverarbeitungsbibliothek, die verschiedene Eigenschaftsformate verarbeiten kann. Unter anderem unterstützt es auch das Parsen und Generieren von JSON. Boost.PropertyTree ist etwas langsamer als RapidJSON, verfügt aber auch über einige Funktionen:
- unterstützt mehrere Datenformate, einschließlich INI-Dateien, XML und JSON usw.;
- unterstützt Datentypen in der C++-Standardbibliothek
- ist steckbar. Mit beispiellosen Datenformatverarbeitungsfunktionen können Benutzer ihre eigenen erweiterten Formate schreiben.
Das Folgende ist ein Beispielcode zum Generieren und Parsen von JSON mit Boost.PropertyTree:
#include <iostream> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/json_parser.hpp> using namespace std; using boost::property_tree::ptree; using boost::property_tree::read_json; using boost::property_tree::write_json; int main() { // 生成JSON ptree pt; pt.put("name", "Tom"); pt.put("age", 20); // 解析JSON string json_str; write_json(cout, pt); cout << endl; read_json("test.json", pt); cout << "name: " << pt.get<string>("name") << endl; cout << "age: " << pt.get<int>("age") << endl; return 0; }
- JsonCpp
JsonCpp ist eine C++-JSON-Bibliothek, die Code of Conduct-API und DOM-Stil-API unterstützt. Unter diesen ähnelt die DOM-API von JsonCpp der Value-Klasse von RapidJSON. Die Funktionen von JsonCpp sind wie folgt:
- unterstützt UTF-8-Codierung;
- unterstützt JSON-Analyse und -Generierung;
- bietet objektorientierte gekapselte API;
- unterstützt C++11-Verschiebungssematik.
Das Folgende ist ein Beispielcode zum Generieren und Parsen von JSON mit JsonCpp:
#include <iostream> #include <json/json.h> using namespace std; using namespace Json; int main() { // 生成JSON Value root; root["name"] = "Tom"; root["age"] = 20; string json_str = root.toStyledString(); cout << json_str << endl; // 解析JSON Reader reader; Value value; reader.parse("{"name":"Tom","age":20}", value, false); cout << "name: " << value["name"].asString() << endl; cout << "age: " << value["age"].asInt() << endl; return 0; }
- Nlohmann.Json
Nlohmann.Json ist eine moderne, leichte und benutzerfreundliche JSON-Verarbeitungsbibliothek. Es bietet eine objektorientierte API und unterstützt C++11 und höhere Standards. Die Funktionen von Nlohmann.Json sind wie folgt:
- Einzeldatei-Header-Implementierung, einfach zu verwenden;
- Sehr leichtgewichtig, nur Header; sehr benutzerfreundlich; Das Folgende ist ein Beispielcode, der Nlohmann.Json zum Generieren und Analysieren von JSON verwendet:
#include <iostream> #include <nlohmann/json.hpp> using namespace std; using json = nlohmann::json; int main() { // 生成JSON json j; j["name"] = "Tom"; j["age"] = 20; string json_str = j.dump(); cout << json_str << endl; // 解析JSON json j2 = json::parse("{"name":"Tom","age":20}"); cout << "name: " << j2["name"] << endl; cout << "age: " << j2["age"] << endl; return 0; }
Nach dem Login kopierenJSON-Verarbeitungsimplementierung in C++
Das Obige stellt vier häufig verwendete JSON-Verarbeitungsbibliotheken in C++ vor. Werfen wir einen Blick auf die spezifische Implementierung .
RapidJSON-Implementierung- Zuerst müssen Sie die RapidJSON-Bibliothek in das Projekt einführen, und dann können Sie die DOM-API zum Parsen und Generieren von JSON verwenden. Die DOM-Methode besteht darin, das gesamte JSON-Objekt in den Speicher einzulesen und in einer Value-Klasse zu speichern. JSON generieren:
// 生成JSON Value root(kObjectType); Value person(kObjectType); person.AddMember("name", "Tom", allocator); person.AddMember("age", 20, allocator); root.AddMember("person", person, allocator); StringBuffer buffer; Writer<StringBuffer> writer(buffer); root.Accept(writer); cout << buffer.GetString() << endl;
JSON analysieren:
// 解析JSON Document d; d.Parse("{"person":{"name":"Tom","age":20}}"); const Value& person = d["person"]; const string name = person["name"].GetString(); const int age = person["age"].GetInt();
- Für die Verwendung von Boost.PropertyTree muss die Boost-Bibliothek in das Projekt eingeführt werden. Anschließend können Sie die ptree-Klasse zum Parsen und Generieren von JSON verwenden. ptree ist eine Baumstruktur. Nach dem Lesen von JSON kann der entsprechende Wert über die get-Funktion von ptree abgerufen werden. JSON generieren:
// 生成JSON ptree root; ptree person; person.put("name", "Tom"); person.put("age", 20); root.add_child("person", person); stringstream stream; write_json(stream, root); cout << stream.str() << endl;
JSON analysieren:
// 解析JSON ptree root; read_json("test.json", root); const string name = root.get<string>("person.name"); const int age = root.get<int>("person.age");
- Die Verwendung von JsonCpp erfordert die Einführung der JsonCpp-Bibliothek in das Projekt. Anschließend können Sie die Value-Klasse verwenden, um JSON zu analysieren und zu generieren. Die Value-Klasse von JsonCpp unterstützt mehrere Arten von Werten, z. B. Zeichenfolgen, Zahlen, Boolesche Werte usw. Generieren Sie JSON:
// 生成JSON Value root; Value person; person["name"] = "Tom"; person["age"] = 20; root["person"] = person; cout << root.toStyledString() << endl;
Parsen Sie JSON:
// 解析JSON Reader reader; Value value; string json_str = "{"person":{"name":"Tom","age":20}}"; reader.parse(json_str, value); const string name = value["person"]["name"].asString(); const int age = value["person"]["age"].asInt();
- Die Verwendung von Nlohmann.Json erfordert die Einführung der Datei json.hpp in das Projekt. Anschließend können Sie das JSON-Objekt zum Parsen und Generieren von JSON verwenden . Nlohmann.Json ermöglicht die Konvertierung verschiedener STL-Containertypen. JSON generieren:
// 生成JSON json j; j["person"]["name"] = "Tom"; j["person"]["age"] = 20; cout << j.dump() << endl;
JSON analysieren:
// 解析JSON json j2 = json::parse("{"person":{"name":"Tom","age":20}}"); const string name = j2["person"]["name"]; const int age = j2["person"]["age"];
Zusammenfassung
In diesem Artikel werden vier häufig verwendete JSON-Verarbeitungsbibliotheken in C++ vorgestellt: RapidJSON, Boost.PropertyTree, JsonCpp und Nlohmann.Json sowie einige ihrer Eigenschaften und Implementierung Methoden. Durch die Verwendung dieser Open-Source-Bibliotheken kann die Analyse und Generierung der JSON-Kapselung problemlos durchgeführt werden. Bei der tatsächlichen Verwendung sollten Entwickler die JSON-Bibliothek auswählen, die ihren Projektanforderungen am besten entspricht, um die besten Ergebnisse zu erzielen.
Das obige ist der detaillierte Inhalt vonJSON-Verarbeitungsmethoden und Implementierung in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mit dem Aufkommen der sozialen Medien ist WeChat zu einem unverzichtbaren Kommunikationsmittel im täglichen Leben der Menschen geworden. Viele Menschen können jedoch auf ein Problem stoßen: Sie können sich gleichzeitig auf demselben Mobiltelefon bei mehreren WeChat-Konten anmelden. Für Huawei-Mobiltelefonbenutzer ist es nicht schwierig, eine doppelte WeChat-Anmeldung zu erreichen. In diesem Artikel wird erläutert, wie eine doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen erreicht wird. Erstens bietet das EMUI-System, das mit Huawei-Mobiltelefonen geliefert wird, eine sehr praktische Funktion – das doppelte Öffnen von Anwendungen. Durch die doppelte Öffnungsfunktion der Anwendung können Benutzer gleichzeitig

Die Programmiersprache PHP ist ein leistungsstarkes Werkzeug für die Webentwicklung, das eine Vielzahl unterschiedlicher Programmierlogiken und Algorithmen unterstützen kann. Unter diesen ist die Implementierung der Fibonacci-Folge ein häufiges und klassisches Programmierproblem. In diesem Artikel stellen wir vor, wie Sie die Fibonacci-Folge mit der Programmiersprache PHP implementieren, und fügen spezifische Codebeispiele bei. Die Fibonacci-Folge ist eine mathematische Folge, die wie folgt definiert ist: Das erste und das zweite Element der Folge sind 1, und ab dem dritten Element ist der Wert jedes Elements gleich der Summe der beiden vorherigen Elemente. Die ersten paar Elemente der Sequenz

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mit der Popularität sozialer Software und der zunehmenden Bedeutung von Datenschutz und Sicherheit rückt die WeChat-Klonfunktion allmählich in den Mittelpunkt der Aufmerksamkeit der Menschen. Die WeChat-Klonfunktion kann Benutzern helfen, sich gleichzeitig bei mehreren WeChat-Konten auf demselben Mobiltelefon anzumelden, was die Verwaltung und Nutzung erleichtert. Es ist nicht schwierig, die WeChat-Klonfunktion auf Huawei-Mobiltelefonen zu implementieren. Sie müssen lediglich die folgenden Schritte ausführen. Schritt 1: Stellen Sie sicher, dass die Version Ihres Mobiltelefonsystems und die WeChat-Version den Anforderungen entsprechen. Stellen Sie zunächst sicher, dass die Version Ihres Huawei-Mobiltelefonsystems sowie die WeChat-App auf die neueste Version aktualisiert wurden.

Zu den Leistungsoptimierungsmethoden für die Konvertierung von PHP-Arrays in JSON gehören: Verwendung von JSON-Erweiterungen und der Funktion json_encode(); Verwendung von Puffern zur Verbesserung der Leistung der Schleifencodierung; JSON-Codierungsbibliothek.

Anmerkungen in der Jackson-Bibliothek steuern die JSON-Serialisierung und -Deserialisierung: Serialisierung: @JsonIgnore: Ignorieren Sie die Eigenschaft @JsonProperty: Geben Sie den Namen an @JsonGetter: Verwenden Sie die get-Methode @JsonSetter: Verwenden Sie die set-Methode Deserialisierung: @JsonIgnoreProperties: Ignorieren Sie die Eigenschaft @ JsonProperty: Geben Sie den Namen @JsonCreator an: Verwenden Sie den Konstruktor @JsonDeserialize: Benutzerdefinierte Logik

Implementierungsleitfaden für PHP-Spielanforderungen Mit der Popularität und Entwicklung des Internets erfreut sich der Markt für Webspiele immer größerer Beliebtheit. Viele Entwickler hoffen, die PHP-Sprache zur Entwicklung ihrer eigenen Webspiele nutzen zu können, und die Umsetzung der Spielanforderungen ist ein wichtiger Schritt. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Sprache allgemeine Spielanforderungen implementieren und spezifische Codebeispiele bereitstellen. 1. Spielfiguren erstellen In Webspielen sind Spielfiguren ein sehr wichtiges Element. Wir müssen die Attribute des Spielcharakters wie Name, Level, Erfahrungswert usw. definieren und Methoden für deren Bedienung bereitstellen

Im heutigen Bereich der Softwareentwicklung wird Golang (Go-Sprache) als effiziente, prägnante und hochgradig parallele Programmiersprache von Entwicklern zunehmend bevorzugt. Seine umfangreiche Standardbibliothek und die effizienten Parallelitätsfunktionen machen es zu einer hochkarätigen Wahl im Bereich der Spieleentwicklung. In diesem Artikel wird untersucht, wie man Golang für die Spieleentwicklung verwendet, und seine leistungsstarken Möglichkeiten anhand spezifischer Codebeispiele demonstriert. 1. Golangs Vorteile bei der Spieleentwicklung: Als statisch typisierte Sprache wird Golang beim Aufbau großer Spielsysteme verwendet.

PHP-Arrays können über die Funktion json_encode() in JSON-Strings konvertiert werden (zum Beispiel: $json=json_encode($array);) und umgekehrt kann die Funktion json_decode() zum Konvertieren von JSON in Arrays ($array=) verwendet werden json_decode($json);) . Weitere Tipps sind die Vermeidung tiefgreifender Konvertierungen, die Angabe benutzerdefinierter Optionen und die Verwendung von Bibliotheken von Drittanbietern.
