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