Maison développement back-end C++ Méthodes de traitement JSON et implémentation en C++

Méthodes de traitement JSON et implémentation en C++

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

JSON est un format d'échange de données léger, facile à lire et à écrire, et facile à analyser et à générer pour les machines. L'utilisation du format JSON facilite le transfert de données entre différents systèmes. En C++, il existe de nombreuses bibliothèques JSON open source pour le traitement JSON. Cet article présentera certaines méthodes de traitement JSON et implémentations couramment utilisées en C++.

Méthodes de traitement JSON en C++

  1. RapidJSON

RapidJSON est un analyseur/générateur C++ JSON rapide qui fournit des API de style DOM, SAX et pool de mémoire. Ses principales caractéristiques sont les suivantes :

  • Petite empreinte mémoire et vitesse d'exécution rapide
  • Prend en charge UTF-8, UTF-16, UTF-32 et d'autres formats d'encodage
  • Prend en charge la sématique de déplacement de C++11, créant ainsi de la mémoire ; une gestion plus efficace ;
  • prend en charge l'API de style SAX, qui peut analyser efficacement les gros fichiers JSON ;
  • prend en charge les stratégies d'allocation personnalisées (allocateur).

Dans RapidJSON, les objets JSON peuvent être analysés via DOM et SAX, et la méthode DOM peut être implémentée via la classe Value. Voici un exemple de code qui utilise RapidJSON pour générer et analyser JSON :

#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;
}
Copier après la connexion
  1. Boost.PropertyTree

Boost.PropertyTree est une bibliothèque de traitement de propriétés simple et facile à utiliser qui peut gérer différents formats de propriétés. Parmi eux, il prend également en charge l'analyse et la génération de JSON. Boost.PropertyTree est légèrement plus lent que RapidJSON, mais il possède également certaines fonctionnalités :

  • prend en charge plusieurs formats de données, notamment les fichiers INI, XML et JSON, etc.
  • prend en charge les types de données dans la bibliothèque standard C++ et la bibliothèque BOOST ;
  • est enfichable Grâce à des capacités de traitement de format de données inégalées, les utilisateurs peuvent écrire leurs propres formats étendus.
Ce qui suit est un exemple de code permettant d'utiliser Boost.PropertyTree pour générer et analyser JSON :

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

    JsonCpp
JsonCpp est une bibliothèque C++ JSON qui prend en charge l'API de code de conduite et l'API de style DOM. Parmi eux, l'API DOM de JsonCpp est similaire à la classe Value de RapidJSON. Les fonctionnalités de JsonCpp sont les suivantes :

    prend en charge l'encodage UTF-8 ;
  • prend en charge l'analyse et la génération JSON ;
  • fournit une API encapsulée orientée objet ;
  • prend en charge la sématique de déplacement C++11 ;
Ce qui suit est un exemple de code pour générer et analyser JSON à l'aide de 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;
}
Copier après la connexion

    Nlohmann.Json
Nlohmann.Json est une bibliothèque de traitement JSON moderne, légère et facile à utiliser. Il fournit une API orientée objet et prend en charge les normes C++11 et supérieures. Les fonctionnalités de Nlohmann.Json sont les suivantes :

    Implémentation d'un en-tête de fichier unique, facile à utiliser ;
  • Prend en charge plusieurs conteneurs STL ;
  • Très léger, en-têtes uniquement ;
  • La sortie formatée est très conviviale ;
Ce qui suit est un exemple de code qui utilise Nlohmann.Json pour générer et analyser JSON :

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

Implémentation du traitement JSON en C++

Ce qui précède présente quatre bibliothèques de traitement JSON couramment utilisées en C++. .

    Implémentation RapidJSON
Vous devez d'abord introduire la bibliothèque RapidJSON dans le projet, puis vous pouvez utiliser l'API DOM pour analyser et générer JSON. La méthode DOM consiste à lire l'intégralité de l'objet JSON en mémoire et à le stocker dans une classe Value.

Générer JSON :

// 生成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;
Copier après la connexion

Analyser JSON :

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

    Implémentation de Boost.PropertyTree
L'utilisation de Boost.PropertyTree nécessite l'introduction de la bibliothèque boost dans le projet, puis vous pouvez utiliser la classe ptree pour analyser et générer JSON. ptree est une structure arborescente. Après avoir lu JSON, la valeur correspondante peut être obtenue via la fonction get de ptree.

Générer JSON :

// 生成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;
Copier après la connexion

Analyser JSON :

// 解析JSON
ptree root;
read_json("test.json", root);
const string name = root.get<string>("person.name");
const int age = root.get<int>("person.age");
Copier après la connexion

    Implémentation JsonCpp
L'utilisation de JsonCpp nécessite l'introduction de la bibliothèque JsonCpp dans le projet, puis vous pouvez utiliser la classe Value pour analyser et générer JSON. La classe Value de JsonCpp prend en charge plusieurs types de valeurs, tels que des chaînes, des nombres, des valeurs booléennes, etc.

Générer JSON :

// 生成JSON
Value root;
Value person;
person["name"] = "Tom";
person["age"] = 20;
root["person"] = person;

cout << root.toStyledString() << endl;
Copier après la connexion

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

    Implémentation de Nlohmann.Json
L'utilisation de Nlohmann.Json nécessite l'introduction du fichier json.hpp dans le projet, puis vous pouvez utiliser l'objet json pour analyser et générer JSON . Nlohmann.Json permet la conversion de différents types de conteneurs STL.

Générer JSON :

// 生成JSON
json j;
j["person"]["name"] = "Tom";
j["person"]["age"] = 20;

cout << j.dump() << endl;
Copier après la connexion

Parse JSON :

// 解析JSON
json j2 = json::parse("{"person":{"name":"Tom","age":20}}");
const string name = j2["person"]["name"];
const int age = j2["person"]["age"];
Copier après la connexion
Résumé

Cet article présente quatre bibliothèques de traitement JSON couramment utilisées en C++ : RapidJSON, Boost.PropertyTree, JsonCpp et Nlohmann.Json, ainsi que certaines de leurs caractéristiques et de leur implémentation. méthodes. En utilisant ces bibliothèques open source, l'analyse et la génération de l'encapsulation JSON peuvent être facilement effectuées. En utilisation réelle, les développeurs doivent choisir la bibliothèque JSON qui correspond le mieux aux besoins de leur projet pour obtenir les meilleurs résultats.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Mar 24, 2024 am 11:27 AM

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Avec l’essor des réseaux sociaux, WeChat est devenu l’un des outils de communication indispensables dans la vie quotidienne des gens. Cependant, de nombreuses personnes peuvent rencontrer un problème : se connecter à plusieurs comptes WeChat en même temps sur le même téléphone mobile. Pour les utilisateurs de téléphones mobiles Huawei, il n'est pas difficile d'obtenir une double connexion WeChat. Cet article explique comment obtenir une double connexion WeChat sur les téléphones mobiles Huawei. Tout d'abord, le système EMUI fourni avec les téléphones mobiles Huawei offre une fonction très pratique : l'ouverture d'une double application. Grâce à la fonction de double ouverture de l'application, les utilisateurs peuvent simultanément

Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Mar 20, 2024 pm 04:54 PM

Le langage de programmation PHP est un outil puissant pour le développement Web, capable de prendre en charge une variété de logiques et d'algorithmes de programmation différents. Parmi eux, l’implémentation de la séquence de Fibonacci est un problème de programmation courant et classique. Dans cet article, nous présenterons comment utiliser le langage de programmation PHP pour implémenter la séquence de Fibonacci et joindrons des exemples de code spécifiques. La suite de Fibonacci est une suite mathématique définie comme suit : le premier et le deuxième élément de la suite valent 1, et à partir du troisième élément, la valeur de chaque élément est égale à la somme des deux éléments précédents. Les premiers éléments de la séquence

Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Mar 24, 2024 pm 06:03 PM

Comment mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei Avec la popularité des logiciels sociaux et l'importance croissante accordée à la confidentialité et à la sécurité, la fonction de clonage WeChat est progressivement devenue le centre d'attention. La fonction de clonage WeChat peut aider les utilisateurs à se connecter simultanément à plusieurs comptes WeChat sur le même téléphone mobile, ce qui facilite la gestion et l'utilisation. Il n'est pas difficile de mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei. Il vous suffit de suivre les étapes suivantes. Étape 1 : Assurez-vous que la version du système de téléphonie mobile et la version de WeChat répondent aux exigences. Tout d'abord, assurez-vous que la version de votre système de téléphonie mobile Huawei a été mise à jour vers la dernière version, ainsi que l'application WeChat.

Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON May 04, 2024 pm 06:15 PM

Les méthodes d'optimisation des performances pour la conversion des tableaux PHP en JSON incluent : l'utilisation d'extensions JSON et de la fonction json_encode() ; l'ajout de l'option JSON_UNESCAPED_UNICODE pour éviter l'échappement de caractères ; l'utilisation de tampons pour améliorer les performances d'encodage de boucle et l'utilisation d'un tiers ; Bibliothèque d'encodage JSON.

Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ? Comment les annotations de la bibliothèque Jackson contrôlent-elles la sérialisation et la désérialisation JSON ? May 06, 2024 pm 10:09 PM

Les annotations dans la bibliothèque Jackson contrôlent la sérialisation et la désérialisation JSON : Sérialisation : @JsonIgnore : Ignorer la propriété @JsonProperty : Spécifiez le nom @JsonGetter : Utilisez la méthode get @JsonSetter : Utilisez la méthode set Désérialisation : @JsonIgnoreProperties : Ignorez la propriété @ JsonProperty : Spécifiez le nom @JsonCreator : utilisez le constructeur @JsonDeserialize : logique personnalisée

Découvrez comment Golang offre des possibilités de développement de jeux Découvrez comment Golang offre des possibilités de développement de jeux Mar 16, 2024 pm 12:57 PM

Dans le domaine actuel du développement logiciel, Golang (langage Go), en tant que langage de programmation efficace, concis et hautement simultané, est de plus en plus favorisé par les développeurs. Sa riche bibliothèque de normes et ses fonctionnalités de concurrence efficaces en font un choix de premier plan dans le domaine du développement de jeux. Cet article explorera comment utiliser Golang pour le développement de jeux et démontrera ses puissantes possibilités à travers des exemples de code spécifiques. 1. Avantages de Golang dans le développement de jeux. En tant que langage typé statiquement, Golang est utilisé dans la construction de systèmes de jeux à grande échelle.

Guide de mise en œuvre des exigences du jeu PHP Guide de mise en œuvre des exigences du jeu PHP Mar 11, 2024 am 08:45 AM

Guide d'implémentation des exigences du jeu PHP Avec la popularité et le développement d'Internet, le marché des jeux Web devient de plus en plus populaire. De nombreux développeurs espèrent utiliser le langage PHP pour développer leurs propres jeux Web, et la mise en œuvre des exigences du jeu constitue une étape clé. Cet article explique comment utiliser le langage PHP pour implémenter les exigences courantes du jeu et fournit des exemples de code spécifiques. 1. Créer des personnages de jeu Dans les jeux Web, les personnages de jeu sont un élément très important. Nous devons définir les attributs du personnage du jeu, tels que le nom, le niveau, la valeur de l'expérience, etc., et fournir des méthodes pour les exploiter.

Utiliser PHP pour implémenter le SaaS : une analyse complète Utiliser PHP pour implémenter le SaaS : une analyse complète Mar 07, 2024 pm 10:18 PM

Je suis vraiment désolé de ne pas pouvoir fournir de conseils de programmation en temps réel, mais je peux vous fournir un exemple de code pour vous permettre de mieux comprendre comment utiliser PHP pour implémenter SaaS. Ce qui suit est un article de 1 500 mots intitulé « Utiliser PHP pour implémenter SaaS : une analyse complète ». À l'ère de l'information d'aujourd'hui, le SaaS (Software as a Service) est devenu le moyen courant pour les entreprises et les particuliers d'utiliser les logiciels. Il offre un moyen plus flexible et plus pratique d'accéder aux logiciels. Avec le SaaS, les utilisateurs n'ont pas besoin d'être sur site

See all articles