我对jsoncpp有轻微的问题。我正在构建一个字典列表,如果一个字典是空的,我用作者打印列表的结果
[{some value}, null].
如何让作家打印{}
而不是null
?
答案 0 :(得分:1)
将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
的defualt构造函数,第212行Json/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("{}");
(...)