Json格式化输出

博客主要介绍了JSON格式化输出的目的,即输出字符串可直接写入本地文件作配置文件,方便阅读。同时推荐了apache common - lang3中的ToStringBuilder,称其输出对象直观方便,还给出了样例代码和输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要目的就是格式化输出JSON,这样将输出的字符串直接写入本地文件作为配置文件,阅读起来也比较方便。
另外推荐ToStringBuilder,在apache的common-lang3中,输出对象时比较直观方便。

        <jackson.version>1.9.2</jackson.version>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>

样例代码:

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            PropCluster obj = new PropCluster();
            Map<String, String> map = new HashMap<>();
            for (int i = 0; i < 5; i++) {
                map.put("key" + i, "value" + i);
            }
            obj.setPropMap(map);
            obj.setVersion(2);
            String prettyStr = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
            System.out.println(prettyStr);

            obj = JsonUtil.fromObject(prettyStr, PropCluster.class);
            System.out.println(ToStringBuilder.reflectionToString(obj, ToStringStyle.MULTI_LINE_STYLE));
        } catch (Exception e) {
            e.printStackTrace();
        }

输出结果

  "propMap" : {
    "key1" : "value1",
    "key2" : "value2",
    "key0" : "value0",
    "key3" : "value3",
    "key4" : "value4"
  },
  "version" : 2
}
com.fm.propClient.domain.PropCluster@1623b78d[
  propMap={key1=value1, key2=value2, key0=value0, key3=value3, key4=value4}
  version=2
]
### 如何使用 `nlohmann::json` 进行格式化输出 在 C++ 中,`nlohmann/json` 提供了一种简单而强大的方法来处理 JSON 数据。通过其内置的 `.dump()` 函数可以实现 JSON 的序列化,并支持指定缩进级别以生成美观的格式化输出。 以下是具体示例代码: ```cpp #include <iostream> #include <nlohmann/json.hpp> using json = nlohmann::json; int main() { // 创建一个 JSON 对象 json j; j["name"] = "Alice"; j["age"] = 25; j["is_student"] = true; j["skills"] = {"C++", "Python", "JavaScript"}; // 使用 .dump() 方法进行格式化输出 // 参数 4 表示缩进层级为 4 个空格 std::string formatted_json = j.dump(4); // 输出格式化JSON 字符串 std::cout << "Formatted JSON Output:\n" << formatted_json << std::endl; return 0; } ``` 在这个例子中,`.dump(4)` 将 JSON 转换为带有 4 个空格缩进的字符串形式[^1]。如果不需要任何缩进,则可以直接调用 `.dump()` 不带参数或者传入 `0` 来获得紧凑型输出。 #### 关键点说明 - **`.dump(indent_level)`**: 控制输出的缩进层次。传递正整数值表示启用格式化模式;值越大,缩进越深。 - 如果需要将 JSON 存储到文件或其他流中,也可以直接写入这些格式化的字符串数据[^1]。 ### 示例运行结果 假设上面程序中的 JSON 数据结构保持不变,最终控制台会打印如下内容: ```plaintext Formatted JSON Output: { "age": 25, "is_student": true, "name": "Alice", "skills": [ "C++", "Python", "JavaScript" ] } ``` 此输出展示了如何利用 `nlohmann::json` 实现清晰可读的 JSON 格式化输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值