Heim Backend-Entwicklung C++ JSON-Verarbeitungsmethoden und Implementierung in C++

JSON-Verarbeitungsmethoden und Implementierung in C++

Aug 21, 2023 pm 11:58 PM
json 实现 处理方法

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++

  1. 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;
}
Nach dem Login kopieren
  1. 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;
}
Nach dem Login kopieren
  1. 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;
}
Nach dem Login kopieren
  1. 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 kopieren
  • JSON-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.
  1. 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;
Nach dem Login kopieren

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();
Nach dem Login kopieren

Boost.PropertyTree-Implementierung

    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.
  1. 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;
Nach dem Login kopieren

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");
Nach dem Login kopieren

JsonCpp-Implementierung

    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.
  1. Generieren Sie JSON:
// 生成JSON
Value root;
Value person;
person["name"] = "Tom";
person["age"] = 20;
root["person"] = person;

cout << root.toStyledString() << endl;
Nach dem Login kopieren

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();
Nach dem Login kopieren

Nlohmann.Json-Implementierung

    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.
  1. JSON generieren:
// 生成JSON
json j;
j["person"]["name"] = "Tom";
j["person"]["age"] = 20;

cout << j.dump() << endl;
Nach dem Login kopieren

JSON analysieren:

// 解析JSON
json j2 = json::parse("{"person":{"name":"Tom","age":20}}");
const string name = j2["person"]["name"];
const int age = j2["person"]["age"];
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mar 24, 2024 am 11:27 AM

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

PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge Mar 20, 2024 pm 04:54 PM

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 So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mar 24, 2024 pm 06:03 PM

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.

Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON May 04, 2024 pm 06:15 PM

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.

Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? May 06, 2024 pm 10:09 PM

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

Implementierungshandbuch für PHP-Spielanforderungen Implementierungshandbuch für PHP-Spielanforderungen Mar 11, 2024 am 08:45 AM

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

Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Mar 16, 2024 pm 12:57 PM

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.

Schnelle Tipps zum Konvertieren von PHP-Arrays in JSON Schnelle Tipps zum Konvertieren von PHP-Arrays in JSON May 03, 2024 pm 06:33 PM

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.

See all articles