使用jsoncpp创建空的json数组

时间:2012-11-08 16:17:32

标签: c++ 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”:[]}

有人知道如何实现这个目标吗?

非常感谢!

3 个答案:

答案 0 :(得分:32)

你也可以这样做:

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

答案 1 :(得分:6)

您可以通过将Value对象定义为“Array对象”来执行此操作(默认情况下,它将其作为“对象”对象,这就是为什么您的成员在未进行任何分配时变为“null”而不是[])< / p>

所以,切换这一行:

 Json::Value jsonValue;
 myMethod(jsonValue);

用这个:

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

瞧!请注意,您可以将“arrayValue”更改为您想要的任何类型(对象,字符串,数组,整数等)以生成该类型的对象。正如我之前所说,默认的是“对象”。

答案 2 :(得分:3)

好的,我明白了。这有点烦人但毕竟很容易。 使用jsoncpp:

创建一个空的json数组
Json::Value jsonArray;
jsonArray.append(Json::Value::null);
jsonArray.clear();
jsonRootValue["emptyArray"] = jsonArray;

通过编写器的输出将是:

{ "emptyArray" = [] }