21xrx.com
2024-12-22 20:37:04 Sunday
登录
文章检索 我的文章 写文章
C++如何解析JSON数据?
2023-07-05 13:29:56 深夜i     --     --
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数据。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复