Получение нулевых значений при сохранении данных json в файл с использованием nlohmann json - PullRequest
0 голосов
/ 09 июля 2019

Я использую 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 из кода.

1 Ответ

1 голос
/ 09 июля 2019

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;
    }

}
...