Создайте пустой массив 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);
}
Если все логические маркеры ложны, out_string - {"somevalue": null}, но я хочу, чтобы это был пустой массив: {"somevalue": [ ] }
кто-нибудь знает, как этого добиться?
большое спасибо!
3 ответов
вы можете сделать это также следующим образом:
jsonRootValue["emptyArray"] = Json::Value(Json::arrayValue);
вы можете сделать это, определив объект Value как " объект Array "(по умолчанию он делает его объектом" object", поэтому ваш член становится" null", когда нет назначения, а не [] )
Итак, включите эту строку:
Json::Value jsonValue;
myMethod(jsonValue);
С этого:
Json::Value jsonValue(Json::arrayValue);
myMethod(jsonValue);
и вуаля! Обратите внимание, что вы можете изменить "arrayValue" на любой тип (object, string, array, int и т. д.) сделать объект такого типа. Как я уже говорил, по умолчанию это "объект".
хорошо, я понял. Это немного раздражает, но это ведь совсем легко. Чтобы создать пустой массив json с jsoncpp:
Json::Value jsonArray;
jsonArray.append(Json::Value::null);
jsonArray.clear();
jsonRootValue["emptyArray"] = jsonArray;
вывод через writer будет:
{ "emptyArray" = [] }