21xrx.com
2025-04-11 05:19:08 Friday
文章检索 我的文章 写文章
C++如何解析JSON数据?
2023-07-05 13:29:56 深夜i     17     0
C++ 解析 JSON 数据

C++作为一种常用的编程语言,不仅可以用来开发桌面应用、嵌入式系统等各种应用程序,还可以用于解析JSON数据。JSON(JavaScript Object Notation)是一种轻量级数据交换格式,它以易于理解和生成的格式来表示数据。在C++中,可以使用第三方库来解析JSON数据,下面是一些常用的JSON解析库及其使用方法。

1. JSONCPP

JSONCPP是一个开源的C++库,它提供了一组简单的API用于解析、生成和查询JSON数据。以下是JSONCPP解析JSON数据的基本示例:

#include <iostream>
#include <json/json.h>
int main() {
 std::string json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
 Json::Value root;  // 定义一个Json::Value对象来表示JSON数据
 Json::Reader reader;
 bool parsed = reader.parse(json, root);  // 解析JSON数据
 if (parsed) {
  std::string name = root["name"].asString();  // 获取JSON数据中的字段值
  int age = root["age"].asInt();
  std::string city = root["city"].asString();
  std::cout << "Name: " << name << std::endl;
  std::cout << "Age: " << age << std::endl;
  std::cout << "City: " << city << std::endl;
 } else
  std::cout << "Failed to parse JSON data." << std::endl;
 
 return 0;
}

2. RapidJSON

RapidJSON是另一个高效的JSON解析库,它支持SAX和DOM两种解析方式,并提供了各种接口来方便地访问JSON数据。以下是RapidJSON解析JSON数据的示例代码:

#include <iostream>
#include "rapidjson/document.h"
using namespace rapidjson;
int main() {
 std::string json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
 Document doc;
 doc.Parse(json.c_str());  // 解析JSON数据
 if (doc.IsObject()) {
  std::string name = doc["name"].GetString();
  int age = doc["age"].GetInt();
  std::string city = doc["city"].GetString();
  std::cout << "Name: " << name << std::endl;
  std::cout << "Age: " << age << std::endl;
  std::cout << "City: " << city << std::endl;
 } else
  std::cout << "Failed to parse JSON data." << std::endl;
 
 return 0;
}

3. C++ REST SDK

C++ REST SDK也是一个流行的C++库,它支持HTTP/HTTPS请求和响应,并提供了一系列的类和函数来解析和生成JSON数据。以下是C++ REST SDK解析JSON数据的示例代码:

#include <iostream>
#include <cpprest/json.h>
using namespace web;
using namespace web::json;
using namespace std;
int main() {
 std::string json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
 auto value = value::parse(json);  // 解析JSON数据
 if (value.is_object()) {
  std::string name = value["name"].as_string();
  int age = value["age"].as_integer();
  std::string city = value["city"].as_string();
  std::cout << "Name: " << name << std::endl;
  std::cout << "Age: " << age << std::endl;
  std::cout << "City: " << city << std::endl;
 } else
  std::cout << "Failed to parse JSON data." << std::endl;
 
 return 0;
}

以上是三种常用的C++ JSON解析库及其使用方法,有了它们的帮助,解析JSON数据变得非常简单。当然,这些库还提供了许多其他的功能,如生成JSON数据、访问JSON数据的各个属性等等。无论是在开发桌面应用还是嵌入式系统,都可以使用它们来处理JSON数据。

  
  

评论区