You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++ jsoncons库将处理后的JSON转换为CSV文件?

使用jsoncons将处理后的JSON转回CSV

我的完整任务:

  • 读取CSV文件
  • 将其解析为JSON文件
  • 执行一些操作
  • 将处理后的JSON重新转换为CSV

我使用jsoncons库,因为它同时支持JSON和CSV处理。目前已经实现了CSV转JSON及相关数据操作,但不知道怎么把处理后的JSON写回CSV。我是jsoncons新手,下面是我解析CSV为JSON的代码片段:

#include <iomanip>
#include <iostream>
#include <fstream>
#include <jsoncons/json.hpp>
#include <jsoncons_ext/csv/csv.hpp>

using namespace std;
using namespace jsoncons;
using namespace jsoncons::csv;

int main()
{
    fstream file;
    file.open("C:\\Users\\Downloads\\Csv1\\smallExportCSV.csv");

    csv::csv_options options;
    options.assume_header(true);

    // Parse the CSV data into an ojson value
    ojson j = csv::decode_csv<ojson>(file, options);

    // Pretty print
    json_options print_options;
    print_options.float_format(float_chars_format::fixed);
    std::cout << "\n" << pretty_print(j, print_options) << "\n\n";
}

解决方案

jsoncons提供了csv::encode_csv函数来完成JSON到CSV的转换,核心是确保你的JSON结构是包含多个对象的数组,每个对象的键对应CSV的列名(和解析CSV时的表头一致)。

以下是完整的示例代码,包含读取CSV、处理数据、写回CSV的完整流程:

#include <iomanip>
#include <iostream>
#include <fstream>
#include <jsoncons/json.hpp>
#include <jsoncons_ext/csv/csv.hpp>

using namespace std;
using namespace jsoncons;
using namespace jsoncons::csv;

int main()
{
    // 1. 读取并解析CSV为JSON
    fstream input_file;
    input_file.open("C:\\Users\\Downloads\\Csv1\\smallExportCSV.csv");

    csv::csv_options parse_options;
    parse_options.assume_header(true);
    ojson j = csv::decode_csv<ojson>(input_file, parse_options);
    input_file.close();

    // 2. 执行你的数据处理操作(示例:修改第一个元素的某个字段)
    if (!j.empty() && j.is_array())
    {
        j[0]["some_column"] = "updated_value";
    }

    // 3. 将处理后的JSON写回CSV
    fstream output_file;
    output_file.open("C:\\Users\\Downloads\\Csv1\\processed_output.csv", ios::out);

    csv::csv_options write_options;
    write_options.write_header(true); // 写入表头
    csv::encode_csv(j, output_file, write_options);
    output_file.close();

    cout << "CSV文件已成功生成\n";
    return 0;
}

关键说明

  • encode_csv接受JSON数组作为输入,每个数组元素对应CSV的一行
  • write_options.write_header(true)会根据JSON对象的键自动生成CSV表头,和解析时的表头保持一致
  • 如果你的JSON结构有调整,比如新增/删除字段,生成的CSV也会对应调整列

内容的提问来源于stack exchange,提问作者Akash Rajawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:05:18