由于json格式的数据阅读起来简单方便,也便于机器解析与生成。在最近的项目中,使用json格式的数据可以快速的传输,首次使用这种格式,所以把自己的封装数组的使用心得记录下来。
QJsonObject json;
QJsonArray Array;
json.insert("x","100");
json.insert("y","200");
Array.push_back(json);
QJsonDocument jsonDoc(Array);
QByteArray strArray = jsonDoc.toJson(QJsonDocument::Indented);
QString string(strArray);
QJsonObject strjson;
strjson.insert("date",string);
strjson.insert("time","2018.10.19");
QJsonDocument strdocument;
strdocument.setObjects(strjson);
QByteArray Ary = strdocument.toJson(QJsonDocument::Indented);
最终的结果为{"date" : "[ {"ux" : "100" , "uy" : "200"} ]" ,"time" : "2018.10.19"}
解析上面的json数据
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson(Ary, &jsonError);
if(!document.isNull() &&(error.error = QJsonParseError::NoError)
{
if(document.isObject())
{
QJsonObject object = document.object();
QJsonObject::Iterator it;
for(it = object.begin;it != object.end;it++)
{
QString key = it.key();
QString value = it.value().toString();
if("time" == key)
{
qDebug()<<"time:"<<value;
}
if("date" == key)
{
if(it.value.isArray())
{
QJsonArray array = it.value().toString();
for(int i = 0;i < array.count(); i ++)
{
QJsonValue value = array.at(i);
QJsonObject object = value.toObject();//转化为对象
QJsonObject::Iterator it;
for(it = object.begin();it != object.end();it ++)
{
QString key = it.key();
QString value = it.value().toString();
if("ux" == key)
{
qDebug()<<"ux:"<<value;
}
if("uy" == key)
{
qDebug()<<"uy:"<<value;
}
}
}
}
}
}
}