Нужно напечатать пустой словарь как {} вместо нуля в jsoncpp

У меня небольшая проблема с jsoncpp. Я строю список словарей и если словарь пуст, и я печатаю результат списка, используя писателя, я получаю

[{some value}, null].

Как мне сделать печать писателя {} вместо null?

1

Решение

Решение

использование Json::Value конструктор с одним аргументом Json::ValueType::objectValue (как описано в документации: JsonCpp Doc / Json :: Значение).

пример

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конструктор по умолчанию, строка 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("{}");
    (...)
    
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]