RapidJSON анализирует данные с нулевыми значениями - PullRequest
0 голосов
/ 07 ноября 2019

Как мы можем проанализировать данные, которые имеют null в json.

В приведенном ниже примере первый Json (json1) не имеет нулевого значения, так как его значения получают желаемый результат. Но во втором вызове здесь значение имеет значение NULL, следовательно, приведет к сбою приложения.

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
#include <string>
using namespace rapidjson;

bool ParseStarName( std::string json, std::string& strStarName)
{
    Document d;
    d.Parse(json.c_str());

    if( d.IsObject() )
    {
        auto itStars = d.FindMember("stars");
        if( itStars != d.MemberEnd() )
        {
            auto &star = itStars->value;
            auto itName = star.FindMember("name");
            if( itName != d.MemberEnd() )
            {
                strStarName = itName->value.GetString();
                return true;
            }
        }
    }
    return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
    const char* json1 = "{\"stars\":{ \"name\": \"1\" }}";
    const char* json2 = "{\"stars\":null}";
    std::string strStarName;
    //No error
    ParseStarName( json1, strStarName);

    //Error
    ParseStarName( json2, strStarName);

    return 0;
}

Есть ли лучший вызов или лучший способ справиться с этой проблемой. В реальном случае мы получаем такие jsons с нулевым значением из стороннего API.

...