QT开发:QString to JSON 格式

JSON 是一种特殊的字符串,存放有Key(关键字) 和Data(数据) 两部分,例如{"firstName":"John"}。由于JSON也是字符串,那么怎么判断字符串是JOSN格式呢? 现在并没有提供一种好的API来判断,所以博主采用了 在JSON字符串的前面添加"[JSON]" 来判断。

JSON 里面存放的数据是String类型的,采取方法是

    QString ---> String 存入JSON
    String ---> QString 返回
    在读取配置文件时候,必须要的操作
    QString --->String 转换为JSON
    String --->QString 做业务

   
bool COptionOperationPanel::qstrIsJson( const QString& qsParam )//用来判断是否为QStrings数据JSON格式
{
        QString strParam = qsParam.left(6);

        if( strParam == "[JSON]")
        {
            return true;
        }
        return false;
}

那么在项目中如何来使用他,吧需要的数据存放成JSON 格式呢?

    QString param() const
    {
        bson::bob builder; //创建存放
        QString qsParam;

        if (NULL != m_pOptionWidget)
        {
            qsParam += m_pOptionWidget->param();
            //XP::qsToS 是封装的QString--->string  读者请使用 qsParam.toStdString
           builder.append("m_OW", XP::qsToS(qsParam));
        }
        bson::bo obj = builder.obj();
        std::string value = "[JSON]"+obj.jsonString();
        
        //return  XP::sToQs(value)   XP::sToQs 是封装的string--->Qstring  读者请使用下面的
        return  QString::fromStdString(value);
 }

 使用JSON 字符串  拿到数据做业务

void setParam( const QString & qsParam )
{
        if (qstrIsJson(qsParam))
        {
            QString copyPatam = qsParam;
            copyPatam = copyPatam.remove(0,6);

            bson::bo objParser = bson::fromjson(XP::qsToS(copyPatam));
            if (NULL != m_pSkStockWidget)
            {
                if (objParser.hasField("m_SSW"))
                {
                    QString m_SSW = XP::sToQs(objParser["m_SSW"].String());
                    m_pSkStockWidget->setParam(m_SSW);
                }
                else
                {
                    m_pSkStockWidget->setParam(copyPatam);
                }
            }
       }
       else
     {
        return;
     }
} 

你可能感兴趣的:(QT,qt,json)