MALOUDA-PSA 2024-02-25 11:20 采纳率: 91%
浏览 2
已结题

Nlohamann::json::to_cbor的用法

想格式化输出json带自动换行,网上说有个Nlohamann::json::to_cbor函数,但是好想要传入vector,有没有办法传入json,然后输出也是json

  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-25 11:21
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据您的描述,您想要使用 Nlohmann JSON 库将 JSON 格式化输出为 CBOR 格式,并希望能够在输出时自动换行。您提到网上说有一个 Nlohmann::json::to_cbor 函数,但是好像需要传入 vector。您想知道是否有办法传入 JSON,然后输出也是
    JSON。针对这个问题,我给出以下解决思路和解决方案:

    解决思路

    1. 将 JSON 转换为 CBOR 格式,然后再将 CBOR 格式转换回 JSON 格式。
    2. 自定义一个函数,将 JSON 格式化输出为 CBOR 格式,并在输出时添加换行符。

      解决方案

      方法一:将 JSON 转换为 CBOR,然后再转换回 JSON

      cppCopy code
      #include <iostream>
      #include <nlohmann/json.hpp>
      using json = nlohmann::json;
      int main() {
      // 原始 JSON 数据
      json j = R"({"name":"John","age":30,"city":"New York"})"_json;
      // 转换为 CBOR
      std::vector<uint8_t> cbor_data = json::to_cbor(j);
      // 将 CBOR 转换回 JSON
      json j_new = json::from_cbor(cbor_data);
      // 打印 JSON
      std::cout << std::setw(4) << j_new << std::endl;
      return 0;
      }
      

      方法二:自定义函数格式化输出 JSON 到 CBOR,并添加换行符

      cppCopy code
      #include <iostream>
      #include <iomanip>
      #include <nlohmann/json.hpp>
      using json = nlohmann::json;
      std::vector<uint8_t> json_to_cbor_with_newlines(const json& j) {
      std::stringstream ss;
      ss << std::setw(4) << j << std::endl;
      std::string json_str = ss.str();
      return std::vector<uint8_t>(json_str.begin(), json_str.end());
      }
      int main() {
      // 原始 JSON 数据
      json j = R"({"name":"John","age":30,"city":"New York"})"_json;
      // 格式化输出 JSON 到 CBOR,并添加换行符
      std::vector<uint8_t> cbor_data = json_to_cbor_with_newlines(j);
      // 输出 CBOR 数据
      for (const auto& byte : cbor_data) {
      std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)byte << " ";
      }
      std::cout << std::endl;
      return 0;
      }
      
      以上代码演示了两种方法,您可以根据实际需求选择其中之一。如果您有其他问题或需要进一步帮助,请随时告诉我!

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月25日
  • 创建了问题 2月25日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: