У меня небольшая проблема с jsoncpp. Я строю список словарей и если словарь пуст, и я печатаю результат списка, используя писателя, я получаю
[{some value}, null].
Как мне сделать печать писателя {}
вместо null
?
использование 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("{}");
(...)
Других решений пока нет …