-1

我正在使用nlohmann json创建并保存一些 json 值。但是当我查看文件时,我会null在 json 之间得到值。下面是它的样子:

{
    "Created": "2019-07-03T13:54:32Z",
    "DataId": "BHI-201-U8",
    "Data": [
        {
            "Name": "Andrew",
            "Attended": "Yes"
        },
        {
            "Name": "John",
            "Attended": "Yes"
        },
        null,    <-- unexpected null
        {
            "Name": "Ronny",
            "Attended": "No"
        },
        null,    <-- unexpected null
        null,    <-- unexpected null
        {
            "Name": "Mathew",
            "Attended": "Yes"
        }
    ],
    "Type": "Person"

}

正如您在上面的 json 数据中看到的,我得到了一些意想不到的空值。以下是我如何保存它:

#include "nlohmann/json.hpp"

using nlohmann::json;

int main()
{
    json outJson;

    //some code

    string outFile = "output.json";

    for (const auto &data : trackedData->Detections()) 
    {
        //some code

        outJson["Data"][data.id]["Name"] = data.name;
        outJson["Data"][data.id]["Attended"] = data.status;

    }

    outJson["Created"] = created;
    outJson["DataId"] = "BHI-201-U8";
    outJson["Type"] = "Person";

    std::ofstream output_file(outFile);
    output_file << outJson.dump(4 , ' ', false);

    output_file.close();

}

如何null从代码中删除这些额外内容。

4

1 回答 1

1

trackedData->Detections()返回对象或结构的列表,其中一些是空值,因此在 json 中为空。在将数据条目添加到 json 之前尝试进行空检查。

for (const auto &data : trackedData->Detections()) 
{
    //some code
    if (data != NULL)
    {
        outJson["Data"][data.id]["Name"] = data.name;
        outJson["Data"][data.id]["Attended"] = data.status;
    }

}
于 2019-07-09T14:07:30.997 回答