C++ JSON解析

一、C++ JSON解析方法

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。C++ JSON解析器可以將JSON格式的字元串轉換為C++對象並操作C++對象。C++11引入了一個名為json的類,它提供了用於解析和生成JSON文本的API。

#include <iostream>
#include <nlohmann/json.hpp>
#include <string>

using json = nlohmann::json; // 引入 nlohmann/json 庫

int main() {
    std::string str = "{\"name\": \"Jack\", \"age\": 20}";
    auto j = json::parse(str); // 解析JSON
    std::cout << "name: " << j["name"] << ", age: " << j["age"] << std::endl; // 輸出結果
    return 0;
}

二、CJSON解析JSON數組

CJSON是一個輕量級的C庫,用於解析JSON數據。該庫提供了解析JSON格式的函數,支持解析JSON數組。

#include <stdio.h>
#include <cjson/cJSON.h>

int main () {
    char *jsonstr = "[{\"name\": \"Jack\", \"age\": 20}, {\"name\": \"Mike\", \"age\": 30}]";
    cJSON *root = cJSON_Parse(jsonstr); // 解析JSON
    cJSON *person = NULL;
    cJSON_ArrayForEach(person, root) { // 遍歷JSON數組
        printf("name: %s, age: %d\n", cJSON_GetObjectItem(person, "name")->valuestring, cJSON_GetObjectItem(person, "age")->valueint);
    }
    cJSON_Delete(root); // 釋放內存
    return 0;
}

三、C++ JSON解析庫

除了C++11自帶的json類外,還有許多流行的C++ JSON解析庫,例如RapidJSON、JSON++、nlohmann/json等。這些庫以其高效的解析速度和易於使用的API而受到歡迎。

#include <iostream>
#include <rapidjson/document.h>
#include <string>

using namespace rapidjson; // 引入 rapidjson 庫

int main() {
    std::string str = "{\"name\": \"Jack\", \"age\": 20}";
    Document d;
    d.Parse(str.c_str()); // 解析JSON
    std::cout << "name: " << d["name"].GetString() << ", age: " << d["age"].GetInt() << std::endl; // 輸出結果
    return 0;
}

四、JSON解析db文件

在C++中,可以使用jsoncpp庫來解析和生成JSON格式的文件。該庫提供了一個名為Json::Value的類,該類可以表示JSON值。

#include <iostream>
#include <fstream>
#include <jsoncpp/json/json.h>

int main() {
    std::ifstream file("data.json");
    Json::Reader reader;
    Json::Value root;
    reader.parse(file, root); // 解析JSON文件
    std::cout << "name: " << root["name"].asString() << ", age: " << root["age"].asInt() << std::endl; // 輸出結果
    return 0;
}

五、JSON解析

JSON是通用的數據交換格式,可以用於不同語言之間的數據交換。在C++中,我們可以通過各種JSON解析庫將JSON格式的數據轉換為C++對象或數據結構,同樣,我們也可以將C++對象或數據結構序列化為JSON格式的數據。

六、PHP解析JSON

在PHP中,可以使用json_decode()函數來將JSON格式的數據解碼為PHP對象或數組。json_decode()函數可以接受一個可選的第二個參數,指定解碼後生成的對象類型,默認是stdClass。

$jsonstr = '{"name": "Jack", "age": 20}';
$json = json_decode($jsonstr);
echo "name: " . $json->name . ", age: " . $json->age; // 輸出結果

七、C解析JSON數組

在C語言中,我們可以使用cJSON庫來解析JSON格式的數據。該庫提供了解析JSON格式的函數,支持解析JSON數組。

#include <stdio.h>
#include <cJSON/cJSON.h>

int main () {
    char *jsonstr = "[{\"name\": \"Jack\", \"age\": 20}, {\"name\": \"Mike\", \"age\": 30}]";
    cJSON *root = cJSON_Parse(jsonstr); // 解析JSON
    cJSON *person = NULL;
    cJSON_ArrayForEach(person, root) { // 遍歷JSON數組
        printf("name: %s, age: %d\n", cJSON_GetObjectItem(person, "name")->valuestring, cJSON_GetObjectItem(person, "age")->valueint);
    }
    cJSON_Delete(root); // 釋放內存
    return 0;
}

八、JSON解析文件

JSON是一種常用的數據格式,在C++中,我們可以使用許多庫來解析和生成JSON格式的文件。這些庫提供了易於使用的API,可以快速解析和生成JSON格式的文件。

#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>

using json = nlohmann::json; // 引入 nlohmann/json 庫

int main() {
    std::ifstream file("data.json");
    json j;
    file >> j; // 解析JSON文件
    std::cout << "name: " << j["name"] << ", age: " << j["age"] << std::endl; // 輸出結果
    return 0;
}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241193.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:26
下一篇 2024-12-12 12:26

相關推薦

  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分散式文件系統(HDFS)。HDFS是一個可擴展性高的分散式…

    編程 2025-04-29
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • 使用Python獲取JSON並解析

    本文將介紹如何使用Python獲取JSON數據並解析相關內容。通過使用Python的第三方庫,我們可以輕鬆地處理JSON數據,包括讀取、提取和操作JSON數據。 一、獲取JSON數…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 使用Spread 8展示JSON數據

    使用Spread 8可以方便地展示JSON數據,本文將詳細介紹如何利用Spread 8展示JSON數據。 一、Spread 8簡介 Spread 8是一款強大的電子表格軟體,可以方…

    編程 2025-04-27
  • 如何在json轉實體類時忽略大小寫

    本文將從以下幾個方面介紹如何在json轉實體類時忽略大小寫。 一、使用Gson庫實現json轉實體類忽略大小寫 Gson是Google提供的Java JSON操作庫,它提供了簡單易…

    編程 2025-04-27
  • C# 中 JSON null 不顯示的處理方法

    本文將為大家介紹在 C# 中處理 JSON null 不顯示的解決方法。 一、null 不顯示的問題 在使用 C# 進行 JSON 數據處理的時候,經常會遇到 null 值不顯示的…

    編程 2025-04-27
  • Hive解析JSON詳解

    一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有結構清晰、易於讀寫、便於解析等特點。它基於JavaScript的一…

    編程 2025-04-25

發表回復

登錄後才能評論