在 JsonCpp 的 Json::Value 中分配 [null]

Assigning [null] in Json::Value in JsonCpp

我有一个应用程序需要按照 JSON 格式进行配置,但已缩小:

<config-json>
{
    "config" : {
        "services" : {
            "analytics" : {
                "sensor" : [
                {
                    "name" : "ip-sensor",
                    "server-name" : ["ip-server1"],
                    "export-name" : "ip-export1",
                    "resource" : "/ipv4",
                    "bulk" : [null] // <-- Notice 
                }
                ]
            }
        }
    }
}
</config-json>

在上面的 JSON 配置中,应用程序期望 "bulk" 始终与 [null] 一样。从应用程序的角度来看,这是正确的期望。

在我的配置生成器代码中,我使用 JsonCpp to build the JSON objects by using Json::Value

因为 "bulk" 需要 [null],我按如下方式填充它:

//Json::Value *json_obj //Getting passed as an arg
(*json_obj)["config"]["services"]["analytics"]["sensor"][0]["bulk"] = Json::nullValue;

但我得到的是:

"bulk":null // Notice the missing [] around null.

因此配置被丢弃。

JsonCpp有没有办法实现以下功能:

"bulk" : [null]

由于 Json 中的括号表示一个数组,因此您要的是一个包含 null 的数组。你应该可以这样做:

Json::Value jsonArray;
jsonArray.append(Json::Value::null);
(*json_obj)["config"]["services"]["analytics"]["sensor"][0][‌​"bulk"] = jsonArray;