Создать пустой массив json с помощью jsoncpp - программирование
Подтвердить что ты не робот

Создать пустой массив json с помощью jsoncpp

У меня есть следующий код:

void MyClass::myMethod(Json::Value& jsonValue_ref)
{
    for (int i = 0; i <= m_stringList.size(); i++)
    {
        if (m_boolMarkerList[i])
        {
            jsonValue_ref.append(stringList[i]);
        }
    }
}


void MyClass::myOuterMethod()
{
    Json::Value jsonRoot;
    Json::Value jsonValue;

    myMethod(jsonValue);

    jsonRoot["somevalue"] = jsonValue;
    Json::StyledWriter writer;
    std::string out_string = writer.write(jsonRoot);
}

Если все boolMarkers являются false, out_string имеет значение { "somevalue": null}, но я хочу, чтобы это был пустой массив: { "somevalue": []}

Кто-нибудь знает, как это достичь?

Большое спасибо!

4b9b3361

Ответ 1

Вы можете сделать это также следующим образом:

jsonRootValue["emptyArray"] = Json::Value(Json::arrayValue);

Ответ 2

Вы можете сделать это, указав объект Value как объект "Array" (по умолчанию он делает его объектом "object", поэтому ваш член становится "null", когда не было присвоено задание вместо [])

Итак, переключите эту строку:

 Json::Value jsonValue;
 myMethod(jsonValue);

с этим:

Json::Value jsonValue(Json::arrayValue);
myMethod(jsonValue);

И вуаля! Обратите внимание, что вы можете изменить "arrayValue" на любой тип, который вы хотите (объект, строка, массив, int и т.д.), Чтобы создать объект этого типа. Как я уже говорил, по умолчанию используется "объект".

Ответ 3

ОК, я понял. Это немного раздражает, но в конце концов, это довольно легко. Чтобы создать пустой json-массив с jsoncpp:

Json::Value jsonArray;
jsonArray.append(Json::Value::null);
jsonArray.clear();
jsonRootValue["emptyArray"] = jsonArray;

Выход через запись будет:

{ "emptyArray" = [] }