关于nlohmann::json的简单使用

简介: 关于nlohmann::json的简单使用

nlohmann::json的使用非常简单,只需要包含.hpp文件即可,这是它的官网https://github.com/nlohmann/json

简单使用:

#include "json.hpp"
#include <iostream>
using Info = nlohmann::json;
int main()
{
  Info info;
  std::cout << info.size() << std::endl;
  info["a"] = "b";
  std::cout << info["a"] << std::endl;
  auto iter = info.find("a");
  if (iter == info.end()) {
    std::cout << "not found" << std::endl;
  }
  else {
    std::cout << *iter << std::endl;
  }
  std::string s = R"({
    "name" : "nick",
    "credits" : "123",
    "ranking" : 1
  })";
  auto j = nlohmann::json::parse(s);
  std::cout << j["name"] << std::endl;
  std::string ss = j.dump();
  std::cout << "ss : " << ss << std::endl;
  Info j1;
  Info j2 = nlohmann::json::object();
  Info j3 = nlohmann::json::array();
  std::cout << j1.is_object() << std::endl;
  std::cout << j1.type_name() << std::endl;
  std::cout << j2.is_object() << std::endl;
  std::cout << j2.is_array() << std::endl;
  Info infoo{
    {"name", "darren"},
    {"credits", 123},
    {"ranking", 1}
  };
  std::cout << infoo["name"] << std::endl;
  std::cout << infoo.type_name() << std::endl;
  //遍历
  for (auto iter = infoo.begin(); iter != infoo.end(); iter++) {
    std::cout << iter.key() << " : " << iter.value() << std::endl;
    //std::cout << iter.value() << std::endl;
    //std::cout << *iter << std::endl;
  }
  system("pause");
  return 0;
}

输出:

最近发现了一个问题,就是它默认会对键进行排序,那如果不想让它排序怎么办?

可以看一下官网的文档

可以看到这里说的很详细,这里提供两种方法:

std::vector<std::pair<std::string, int>> keyValuePairs;
  keyValuePairs.emplace_back("key3", 3);
  keyValuePairs.emplace_back("key1", 1);
  keyValuePairs.emplace_back("key2", 2);
  nlohmann::json jsonObject(keyValuePairs);
  // 输出序列化后的JSON数据
  std::cout << jsonObject.dump() << std::endl;
  std::cout << "===============" << std::endl;
  nlohmann::ordered_json orderjson;
  orderjson["a"] = 1;
  orderjson["c"] = 2;
  orderjson["b"] = 3;
  std::cout << orderjson.dump(2) << std::endl;
相关文章
|
6月前
|
存储 JSON 算法
C++ JSON库 nlohmann::basic_json::boolean_t 的用法
C++ JSON库 nlohmann::basic_json::boolean_t 的用法
119 0
|
6月前
|
JSON 数据格式 C++
C++ JSON库 nlohmann::basic_json::array 的用法
C++ JSON库 nlohmann::basic_json::array 的用法
420 1
|
6月前
|
JSON 数据格式 C++
C++ JSON库 nlohmann::basic_json::accept的用法
C++ JSON库 nlohmann::basic_json::accept的用法
88 1
|
6月前
|
XML JSON API
深入解析C++ JSON库:nlohmann::json:: parse的内部机制与应用
深入解析C++ JSON库:nlohmann::json:: parse的内部机制与应用
624 0
|
6月前
|
存储 JSON 算法
C++ JSON库 nlohmann::basic_json::binary_t的用法
C++ JSON库 nlohmann::basic_json::binary_t的用法
105 0
|
6月前
|
JSON 数据格式 C++
C++ JSON库 nlohmann::basic_json::binary 的用法
C++ JSON库 nlohmann::basic_json::binary 的用法
94 0
|
6月前
|
JSON 数据格式 C++
C++ JSON库 nlohmann::basic_json::begin() 的用法
C++ JSON库 nlohmann::basic_json::begin() 的用法
68 0
|
6月前
|
JSON 并行计算 API
使用CJSON/Nlohmann:快速简便地在C/C++中处理JSON数据
使用CJSON/Nlohmann:快速简便地在C/C++中处理JSON数据
1433 0
|
JSON 程序员 C++
2022-9-16-C++json库--nlohmann 学习
2022-9-16-C++json库--nlohmann 学习
229 0
|
12天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道