Bwar / CJsonObject

Ultralightweight JSON parser in C++ based on cJSON
MIT License
648 stars 239 forks source link

建议 #9

Closed kekxv closed 4 years ago

kekxv commented 5 years ago

建议增加三个接口,方便直接使用:json["title"].toString() // 直接得到标题

std::string toString() const;
uint64 toNumber() const;
double toDouble() const;

    std::string CJsonObject::toString() const
    {
        if (m_pJsonData != NULL && m_pJsonData->type == cJSON_String)
        {
            return m_pJsonData->valuestring;
        }
        else if (m_pExternJsonDataRef != NULL && m_pExternJsonDataRef->type == cJSON_String)
        {
            return m_pExternJsonDataRef->valuestring;
        }
        return "";
    }
    uint64 CJsonObject::toNumber() const
    {
        if (m_pJsonData != NULL && m_pJsonData->type == cJSON_Int)
        {
            return m_pJsonData->valueint;
        }
        else if (m_pExternJsonDataRef != NULL && m_pExternJsonDataRef->type == cJSON_Int)
        {
            return m_pExternJsonDataRef->valueint;
        }
        return false;
    }
    double CJsonObject::toDouble() const
    {
        if (m_pJsonData != NULL && (m_pJsonData->type == cJSON_Double || m_pJsonData->type == cJSON_Int))
        {
            return m_pJsonData->valuedouble;
        }
        else if (m_pExternJsonDataRef != NULL && (m_pExternJsonDataRef->type == cJSON_Double || m_pExternJsonDataRef->type == cJSON_Int))
        {
            return m_pExternJsonDataRef->valuedouble;
        }
        return false;
    }
Bwar commented 5 years ago

这样的三个函数都不能让人明白是做什么用的,建议不予采纳。 这里提到的toString()其实就是operator()已经做了的事情。

kekxv commented 5 years ago

@Bwar 函数名无所谓,目的是可以方便的提取数据

例如:

objectClass[cjsonTmp["id"].toNumber()] = cjsonTmp["display_name"].toString();

可以直接获取到 idint值,而不需要通过定义一个变量,然后在通过 Get 获取,这样代码量相对较多(其实就是比较懒)。

operator() 只能获取 string 类型。

marklove5102 commented 4 years ago

作为一个新手很想看 lz 修改后的单元源码? 留个邮箱 710774265@qq.com

kekxv commented 4 years ago

作为一个新手很想看lz修改后的单元原始码? 留个邮箱710774265@qq.com

修改后的源码在这里:https://github.com/ClangTools/clangTools/tree/master/src/JSON 不过意义不大。