JSON for Modern C++的dump函数的一个小修改:纯数值内容放在同一行

对于[1,2,3...]这样的纯数值json,使用dump(4)输出会占用非常多的行:

[
    1,
    2,
    3,
。。。
]


我个人喜欢对这样的纯数值,只用一行,所以小改了一下源代码:

void dump(const BasicJsonType& val, const bool pretty_print,
    const bool ensure_ascii,
    const unsigned int indent_step,
    const unsigned int current_indent = 0)
...
        case value_t::array:
        {
            if (val.m_value.array->empty())
            {
                o->write_characters("[]", 2);
                return;
            }

            if (pretty_print)
            {
                auto subitem_type = val.m_value.array->cbegin()->m_type;
                bool full_pretty_print = subitem_type == value_t::array  ||
                                         subitem_type == value_t::object ||
                                         std::any_of(val.m_value.array->cbegin(), val.m_value.array->cend(),
                                                     [subitem_type](auto & subIte
### 相关介绍 JSON for Modern C++一个德国开发者 nlohmann 编写的开源项目,其 GitHub 开源项目地址为:https://github.com/nlohmann/json [^4]。它能够用于轻松完成 JSON 数据的解析和生成,适用于网络数据交互、配置文件读取等场景 [^2]。 ### 特点 1. **直观的语法**:提供了易于理解和使用的语法,降低了开发难度。 2. **单头文件库**:整个代码由一个头文件 `json.hpp` 组成,没有子项目、依赖关系和复杂的构建系统,使用方便 [^4]。 3. **C++11 标准**:使用 C++11 标准编写,充分利用了 C++11 的新特性。 4. **类 STL 使用方式**:使用 JSON 就像使用 STL 容器一样,操作直观,还能实现 STL 和 JSON 容器之间的相互转换 [^4]。 5. **强大的序列化与反序列化**:可以直接将 C++ STL 中的容器内容序列化成 JSON 字符串,也能将 JSON 数据反序列化为 C++ 结构体 [^5]。 ### 使用方法 以下是一些使用示例: #### 简单使用 ```cpp #include <iostream> #include "json.hpp" using json = nlohmann::json; int main() { // 创建一个 JSON 对象 json j; j["name"] = "John"; j["age"] = 30; // 输出 JSON 对象 std::cout << j.dump() << std::endl; return 0; } ``` #### 序列化与反序列化 ```cpp #include <iostream> #include "json.hpp" using json = nlohmann::json; // 定义一个结构体 struct Person { std::string name; int age; }; // 序列化结构体 void to_json(json& j, const Person& p) { j = json{{"name", p.name}, {"age", p.age}}; } // 反序列化结构体 void from_json(const json& j, Person& p) { j.at("name").get_to(p.name); j.at("age").get_to(p.age); } int main() { Person p = {"John", 30}; // 序列化 json j = p; std::cout << j.dump() << std::endl; // 反序列化 Person p2; from_json(j, p2); std::cout << "Name: " << p2.name << ", Age: " << p2.age << std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值