需要在jsoncpp中将空字典打印为{}而不是null

时间:2013-11-22 09:16:16

标签: c++ dictionary jsoncpp

我对jsoncpp有轻微的问题。我正在构建一个字典列表,如果一个字典是空的,我用作者打印列表的结果

[{some value}, null].

如何让作家打印{}而不是null

1 个答案:

答案 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::nullTypeJson::Writer班级系列显示值nullTypenull和。{ 类型为objectValue的空值为{}(对于每个Json::Writer都是如此:StyledWriterStyledStreamWriterFastWriter

  • 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("{}");
            (...)