Rumah pembangunan bahagian belakang C++ Kaedah pemprosesan dan pelaksanaan JSON dalam C++

Kaedah pemprosesan dan pelaksanaan JSON dalam C++

Aug 21, 2023 pm 11:58 PM
json capai Kaedah rawatan

JSON ialah format pertukaran data ringan yang mudah dibaca dan ditulis serta mudah untuk dihuraikan dan dijana oleh mesin. Menggunakan format JSON memudahkan pemindahan data antara pelbagai sistem. Dalam C++, terdapat banyak perpustakaan JSON sumber terbuka untuk pemprosesan JSON. Artikel ini akan memperkenalkan beberapa kaedah pemprosesan dan pelaksanaan JSON yang biasa digunakan dalam C++.

Kaedah pemprosesan JSON dalam C++

  1. RapidJSON

RapidJSON ialah penghurai/penjana JSON C++ pantas yang menyediakan API gaya DOM, SAX dan kumpulan memori. Ciri-ciri utamanya adalah seperti berikut:

  • Jejak memori kecil dan kelajuan pelaksanaan yang pantas
  • Menyokong format pengekodan UTF-8, UTF-32 dan lain-lain
  • Menyokong pergerakan sematik C++11; pengurusan lebih cekap;
  • menyokong API gaya SAX, yang boleh menghuraikan fail JSON yang besar dengan cekap
  • menyokong strategi peruntukan tersuai (pembahagian).

Dalam RapidJSON, objek JSON boleh dihuraikan melalui DOM dan SAX, dan kaedah DOM boleh dilaksanakan melalui kelas Nilai. Berikut ialah kod sampel yang menggunakan RapidJSON untuk menjana dan menghuraikan 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;
}
Salin selepas log masuk
  1. Boost.PropertyTree

Boost.PropertyTree ialah perpustakaan pemprosesan harta yang ringkas dan mudah digunakan yang boleh mengendalikan pelbagai format hartanah. Antaranya, ia juga menyokong penghuraian dan penjanaan JSON. Boost.PropertyTree lebih perlahan daripada RapidJSON, tetapi ia juga mempunyai beberapa ciri:

  • menyokong berbilang format data, termasuk fail INI, XML dan JSON, dsb.
  • menyokong jenis data dalam pustaka standard C++ dan pustaka BOOST;
  • boleh pasang Dengan keupayaan pemprosesan format data yang tiada tandingan, pengguna boleh menulis format lanjutan mereka sendiri.
Berikut ialah contoh kod untuk menjana dan menghuraikan JSON menggunakan 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;
}
Salin selepas log masuk

    JsonCpp
JsonCpp ialah perpustakaan JSON C++ yang menyokong API kod kelakuan dan API gaya DOM. Antaranya, API DOM JsonCpp adalah serupa dengan kelas Nilai RapidJSON. Ciri-ciri JsonCpp adalah seperti berikut:

    menyokong pengekodan UTF-8;
  • menyokong penghuraian dan penjanaan JSON
  • menyediakan API terkapsul berorientasikan objek
  • menyokong sematik C++11;
Berikut ialah kod sampel untuk menjana dan menghuraikan JSON menggunakan 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;
}
Salin selepas log masuk

    Nlohmann.Json
Nlohmann.Json ialah perpustakaan pemprosesan JSON yang moden, ringan dan mudah digunakan. Ia menyediakan API berorientasikan objek dan menyokong piawaian C++11 dan ke atas. Ciri-ciri Nlohmann.Json adalah seperti berikut:

    Pelaksanaan pengepala fail tunggal, mudah digunakan
  • Menyokong berbilang bekas STL
  • Sangat ringan, pengepala sahaja
  • Keluaran berformat sangat mesra.
Berikut ialah kod sampel yang menggunakan Nlohmann.Json untuk menjana dan menghuraikan 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;
}
Salin selepas log masuk

Pelaksanaan pemprosesan JSON dalam C++

Di atas memperkenalkan empat perpustakaan pemprosesan JSON yang biasa digunakan dalam C++. Mari kita lihat pelaksanaan khusus .

    Pelaksanaan RapidJSON
Mula-mula anda perlu memperkenalkan perpustakaan RapidJSON ke dalam projek, dan kemudian anda boleh menggunakan API DOM untuk menghuraikan dan menjana JSON. Kaedah DOM adalah untuk membaca keseluruhan objek JSON ke dalam memori dan menyimpannya dalam kelas Nilai.

Jana 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;
Salin selepas log masuk

Parse 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();
Salin selepas log masuk

    Boost.PropertyTree pelaksanaan
Menggunakan Boost.PropertyTree memerlukan pengenalan pustaka rangsangan ke dalam projek, dan kemudian anda boleh menjana kelas JSON. ptree ialah struktur pokok Selepas membaca JSON, nilai yang sepadan boleh diperolehi melalui fungsi get ptree.

Jana 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;
Salin selepas log masuk

Parse 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");
Salin selepas log masuk

    Pelaksanaan JsonCpp
Menggunakan JsonCpp memerlukan memperkenalkan perpustakaan JsonCpp ke dalam projek, dan kemudian anda boleh menggunakan kelas Nilai untuk menghuraikan dan menjana JSON. Kelas Nilai JsonCpp menyokong pelbagai jenis nilai, seperti rentetan, nombor, Boolean, dsb.

Jana JSON:

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

cout << root.toStyledString() << endl;
Salin selepas log masuk

Parse 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();
Salin selepas log masuk

    Nlohmann.Json implementation
Menggunakan Nlohmann.Json memerlukan pengenalan fail json.hpp ke dalam projek, dan kemudian anda boleh menggunakan objek JSON dan json . Nlohmann.Json menyediakan penukaran pelbagai jenis kontena STL.

Jana JSON:

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

cout << j.dump() << endl;
Salin selepas log masuk

Parse JSON:

// 解析JSON
json j2 = json::parse("{"person":{"name":"Tom","age":20}}");
const string name = j2["person"]["name"];
const int age = j2["person"]["age"];
Salin selepas log masuk
Ringkasan

Artikel ini memperkenalkan empat perpustakaan pemprosesan JSON yang biasa digunakan dalam C++: RapidJSON, Boost.PropertyTree, JsonCpp dan Nloh serta beberapa ciri pelaksanaannya, JsonCpp dan Nloh. kaedah . Dengan menggunakan perpustakaan sumber terbuka ini, penghuraian dan penjanaan enkapsulasi JSON boleh dilakukan dengan mudah. Dalam penggunaan sebenar, pembangun harus memilih perpustakaan JSON yang paling sesuai dengan keperluan projek mereka untuk mendapatkan hasil yang terbaik.

Atas ialah kandungan terperinci Kaedah pemprosesan dan pelaksanaan JSON dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Mar 24, 2024 am 11:27 AM

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Dengan kebangkitan media sosial, WeChat telah menjadi salah satu alat komunikasi yang sangat diperlukan dalam kehidupan seharian orang ramai. Walau bagaimanapun, ramai orang mungkin menghadapi masalah: log masuk ke beberapa akaun WeChat pada masa yang sama pada telefon mudah alih yang sama. Bagi pengguna telefon mudah alih Huawei, tidak sukar untuk mencapai log masuk WeChat dwi Artikel ini akan memperkenalkan cara mencapai log masuk WeChat dwi pada telefon mudah alih Huawei. Pertama sekali, sistem EMUI yang disertakan dengan telefon mudah alih Huawei menyediakan fungsi yang sangat mudah - pembukaan dua aplikasi. Melalui fungsi pembukaan dwi aplikasi, pengguna boleh serentak

Panduan Pengaturcaraan PHP: Kaedah untuk Melaksanakan Jujukan Fibonacci Panduan Pengaturcaraan PHP: Kaedah untuk Melaksanakan Jujukan Fibonacci Mar 20, 2024 pm 04:54 PM

Bahasa pengaturcaraan PHP ialah alat yang berkuasa untuk pembangunan web, yang mampu menyokong pelbagai logik dan algoritma pengaturcaraan yang berbeza. Antaranya, melaksanakan jujukan Fibonacci adalah masalah pengaturcaraan biasa dan klasik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan bahasa pengaturcaraan PHP untuk melaksanakan jujukan Fibonacci, dan melampirkan contoh kod tertentu. Jujukan Fibonacci ialah jujukan matematik yang ditakrifkan seperti berikut: unsur pertama dan kedua bagi jujukan ialah 1, dan bermula dari unsur ketiga, nilai setiap unsur adalah sama dengan jumlah dua unsur sebelumnya. Beberapa elemen pertama urutan

Bagaimana untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Bagaimana untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Mar 24, 2024 pm 06:03 PM

Bagaimana untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Dengan populariti perisian sosial dan penekanan yang semakin meningkat terhadap privasi dan keselamatan orang ramai, fungsi klon WeChat telah beransur-ansur menjadi tumpuan perhatian. Fungsi klon WeChat boleh membantu pengguna log masuk ke berbilang akaun WeChat pada telefon mudah alih yang sama pada masa yang sama, menjadikannya lebih mudah untuk diurus dan digunakan. Tidak sukar untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Anda hanya perlu mengikuti langkah berikut. Langkah 1: Pastikan versi sistem telefon mudah alih dan versi WeChat memenuhi keperluan Pertama, pastikan versi sistem telefon mudah alih Huawei anda telah dikemas kini kepada versi terkini, serta Apl WeChat.

Petua pengoptimuman prestasi untuk menukar tatasusunan PHP kepada JSON Petua pengoptimuman prestasi untuk menukar tatasusunan PHP kepada JSON May 04, 2024 pm 06:15 PM

Kaedah pengoptimuman prestasi untuk menukar tatasusunan PHP kepada JSON termasuk: menggunakan sambungan JSON dan fungsi json_encode() menambah pilihan JSON_UNESCAPED_UNICODE untuk mengelakkan aksara melarikan diri menggunakan penimbal untuk meningkatkan prestasi pengekodan JSON; Pustaka pengekodan JSON.

Bagaimanakah anotasi dalam perpustakaan Jackson mengawal pensirilan dan penyahsirilan JSON? Bagaimanakah anotasi dalam perpustakaan Jackson mengawal pensirilan dan penyahsirilan JSON? May 06, 2024 pm 10:09 PM

Anotasi dalam perpustakaan Jackson mengawal pensirilan dan penyahserilangan JSON: Pensirilan: @JsonIgnore: Abaikan harta @JsonProperty: Tentukan nama @JsonGetter: Gunakan kaedah get @JsonSetter: Gunakan kaedah yang ditetapkan Deserialization: @JsonIgnoreProperties: Abaikan harta @ JsonProperty: Nyatakan nama @JsonCreator: Gunakan pembina @JsonDeserialize: Logik tersuai

Kuasai cara Golang mendayakan kemungkinan pembangunan permainan Kuasai cara Golang mendayakan kemungkinan pembangunan permainan Mar 16, 2024 pm 12:57 PM

Dalam bidang pembangunan perisian hari ini, Golang (bahasa Go), sebagai bahasa pengaturcaraan yang cekap, ringkas dan sangat bersesuaian, semakin digemari oleh pembangun. Perpustakaan standardnya yang kaya dan ciri-ciri konkurensi yang cekap menjadikannya pilihan berprofil tinggi dalam bidang pembangunan permainan. Artikel ini akan meneroka cara menggunakan Golang untuk pembangunan permainan dan menunjukkan kemungkinan besarnya melalui contoh kod tertentu. 1. Kelebihan Golang dalam pembangunan permainan Sebagai bahasa yang ditaip secara statik, Golang digunakan dalam membina sistem permainan berskala besar.

Panduan Pelaksanaan Keperluan Permainan PHP Panduan Pelaksanaan Keperluan Permainan PHP Mar 11, 2024 am 08:45 AM

Panduan Pelaksanaan Keperluan Permainan PHP Dengan populariti dan perkembangan Internet, pasaran permainan web menjadi semakin popular. Ramai pembangun berharap untuk menggunakan bahasa PHP untuk membangunkan permainan web mereka sendiri, dan melaksanakan keperluan permainan adalah langkah utama. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan keperluan permainan biasa dan menyediakan contoh kod khusus. 1. Cipta watak permainan Dalam permainan web, watak permainan adalah elemen yang sangat penting. Kita perlu mentakrifkan atribut watak permainan, seperti nama, tahap, nilai pengalaman, dll., dan menyediakan kaedah untuk mengendalikannya

Menggunakan PHP untuk melaksanakan SaaS: analisis komprehensif Menggunakan PHP untuk melaksanakan SaaS: analisis komprehensif Mar 07, 2024 pm 10:18 PM

Saya benar-benar minta maaf kerana saya tidak dapat memberikan panduan pengaturcaraan masa nyata, tetapi saya boleh memberikan anda contoh kod untuk memberi anda pemahaman yang lebih baik tentang cara menggunakan PHP untuk melaksanakan SaaS. Berikut ialah artikel dalam 1,500 perkataan, bertajuk "Menggunakan PHP untuk melaksanakan SaaS: Analisis komprehensif." Dalam era maklumat hari ini, SaaS (Perisian sebagai Perkhidmatan) telah menjadi cara arus perdana bagi perusahaan dan individu untuk menggunakan perisian. Ia menyediakan cara yang lebih fleksibel dan mudah untuk mengakses perisian. Dengan SaaS, pengguna tidak perlu berada di premis

See all articles