需要在jsoncpp中将空字典打印为{},而不是null
Need to print empty dictionary as {} instead of null in jsoncpp
我对jsoncpp有一个小问题。我正在建立一个字典列表,如果一个字典是空的,我使用writer打印列表的结果,我会得到
[{some value}, null].
如何使编写器打印{}
而不是null
?
解决方案
使用Json::Value
构造函数,该构造函数接受一个参数Json::ValueType::objectValue
(如文档JsonCpp Doc/Json::Value中所述)。
示例
Json::Value value;
value["list"][0] = Json::Value(Json::ValueType::objectValue);
value["list"][1] = Json::Value();
cout << value.toStyledString() << endl;
上面的代码打印出来:
{
"list" : [ {}, null ]
}
解释
Json::Value
类的默认构造函数使用默认参数值Json::ValueType::nullType
。Json::Writer
类族显示值,其中nullType
为null
类型为objectValue
的空值为{}
(对于每个Json::Writer
:StyledWriter
、StyledStreamWriter
、FastWriter
为真。
Json::Value
的defalt构造函数,Json第212行/value.h@github:namespace Json { class JSON_API Value { Value(ValueType type = nullValue); // line: 212 (...)
此处为
StyledWriter
的作用,第263-290行json_writer.cpp@github:void StyledWriter::writeValue(const Value& value) { switch (value.type()) { case nullValue: pushValue("null"); (...) case objectValue: { Value::Members members(value.getMemberNames()); if (members.empty()) pushValue("{}"); (...)
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 为什么在C++中增加指针后打印了一个值而不是 NULL/0?
- 打印空指针时,std::cout 可以打印 "NULL" 而不是 0 吗?
- 链接列表打印null -C
- 打印超过 NULL 字符的内存内容
- printf() 混淆 - 尝试打印字符串时打印 (null),打印缓冲区时打印正确的值
- 需要在jsoncpp中将空字典打印为{},而不是null
- 打印出设置为 NULL 的字符*的可能方法?