• 3669阅读
  • 1回复

[原创]QT json [复制链接]

上一主题 下一主题
离线amwha
 

只看楼主 倒序阅读 楼主  发表于: 2017-05-10
json解析:
  
  1. #include <QCoreApplication>
  2. #include <QFile>
  3. #include <QTextStream>
  4. #include <QJsonArray>
  5. #include <QJsonDocument>
  6. #include <QJsonObject>
  7. #include <QDebug>
  8. int main(int argc, char *argv[])
  9. {
  10.     QCoreApplication a(argc, argv);
  11. {
  12.     QVariantList people;
  13.     QVariantMap bob;
  14.     bob.insert("Name", "Bob");
  15.     bob.insert("Phonenumber", 123);
  16.     QVariantMap alice;
  17.     alice.insert("Name", "Alice");
  18.     alice.insert("Phonenumber", 321);
  19.     people << bob << alice;
  20.     QJsonDocument jsonDocument = QJsonDocument::fromVariant(people);
  21.     QByteArray byte_array = jsonDocument.toJson();
  22.     QFile file("./test1.js");
  23.     file.open(QIODevice::WriteOnly);
  24.     QTextStream stream(&file);
  25.     stream << byte_array << "\r\n";
  26.     file.flush();
  27.     file.close();
  28.     QJsonParseError ParseError;
  29.     QJsonDocument praseDoc = QJsonDocument::fromJson(byte_array,&ParseError);
  30.     if(ParseError.error == QJsonParseError::NoError)
  31.     {
  32.         if(praseDoc.isArray())
  33.         {
  34.             QJsonArray array = praseDoc.array();
  35.             for(int i = 0 ; i <  array.size(); i++)
  36.             {
  37.                 QVariantMap result = array.at(i).toVariant().toMap();
  38.                 for(QVariantMap::iterator iter = result.begin();iter != result.end();iter++)
  39.                 {
  40.                     QString key = iter.key();
  41.                     QVariant value = iter.value();
  42.                     qDebug()<<key<<value.toString();
  43.                 }
  44.             }
  45.             qDebug()<<"/////////////other method/////////////";
  46.             for(int i = 0 ; i <  array.size(); i++)
  47.             {
  48.                 QJsonObject obj = array.at(i).toObject();
  49.                 qDebug()<<obj.value("Name").toString()<<obj.value("Phonenumber").toInt();
  50.             }
  51.         }
  52.     }
  53. }
  54. qDebug()<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
  55. {
  56.     QJsonObject json_object1;
  57.     json_object1.insert("ID",        "1263");
  58.     json_object1.insert("Name",      "lin");
  59.     json_object1.insert("age",       20);
  60.     QJsonObject json_object2;
  61.     json_object2.insert("ID",      "2345");
  62.     json_object2.insert("Name",      "jin");
  63.     json_object2.insert("age",       5);
  64.     QJsonArray json_array;
  65.     json_array.insert(0,json_object1);
  66.     json_array.insert(1,json_object2);
  67.     QByteArray byte_array = QJsonDocument(json_array).toJson();
  68.     QJsonArray json_array2 = QJsonDocument::fromJson(byte_array).array();
  69.     for(int i = 0; i < json_array2.size(); ++i)
  70.     {
  71.         QJsonObject json = json_array2.at(i).toObject();
  72.         qDebug() << json.value("ID").toString();
  73.         qDebug() << json.value("Name").toString();
  74.         qDebug() << json.value("age").toInt();
  75.     }
  76.     QFile file("./test2.js");
  77.     file.open(QIODevice::WriteOnly);
  78.     QTextStream stream(&file);
  79.     stream <<byte_array<<"\r\n";
  80.     file.flush();
  81.     file.close();
  82. }
  83. qDebug()<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
  84. {
  85.     QString json("{"
  86.             "\"encoding\" : \"UTF-8\","
  87.             "\"plug-ins\" : ["
  88.             "\"python\","
  89.             "\"c++\","
  90.             "\"ruby\""
  91.             "],"
  92.             "\"indent\" : { \"length\" : 3, \"use_space\" : true }"
  93.             "}");
  94.     QJsonParseError error;
  95.     QJsonDocument jsonDocument = QJsonDocument::fromJson(json.toUtf8(), &error);
  96.     if (error.error == QJsonParseError::NoError)
  97.     {
  98.         if (jsonDocument.isObject())
  99.         {
  100.             QVariantMap result = jsonDocument.toVariant().toMap();
  101.             qDebug() << "encoding:" << result["encoding"].toString();
  102.             qDebug() << "plugins:";
  103.             foreach (QVariant plugin, result["plug-ins"].toList()) {
  104.                 qDebug() << "\t-" << plugin.toString();
  105.             }
  106.             QVariantMap nestedMap = result["indent"].toMap();
  107.             qDebug() << "length:" << nestedMap["length"].toInt();
  108.             qDebug() << "use_space:" << nestedMap["use_space"].toBool();
  109.         }
  110.     }
  111.     QByteArray byte_array = jsonDocument.toJson();
  112.     QFile file("./test3.js");
  113.     file.open(QIODevice::WriteOnly);
  114.     QTextStream stream(&file);
  115.     stream << byte_array<<"\r\n";
  116.     file.flush();
  117.     file.close();
  118. }
  119. qDebug()<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
  120. {
  121.     QJsonObject person;
  122.     person.insert("ID",        "1263");
  123.     person.insert("Name",      "lin");
  124.     person.insert("age",       20);
  125.     QJsonObject company;
  126.     company.insert("Name",     "HH CO.LMT");
  127.     company.insert("Location", "guangzhou");
  128.     company.insert("businss",   "med");
  129.     QJsonObject json_object;
  130.     json_object.insert("person", QJsonValue(person));
  131.     json_object.insert("company", QJsonValue(company));
  132.    QByteArray byte_array =  QJsonDocument(json_object).toJson();
  133.    QJsonParseError ParseError;
  134.    QJsonDocument praseDoc = QJsonDocument::fromJson(byte_array,&ParseError);
  135.    if(ParseError.error == QJsonParseError::NoError)
  136.    {
  137.        if(praseDoc.isObject())
  138.        {
  139.             QJsonObject objs = praseDoc.object();
  140.             QVariantMap result = objs.value("company").toVariant().toMap();
  141.             qDebug()<< result["Location"].toString();
  142.             qDebug()<< result["Name"].toString();
  143.             qDebug()<< result["businss"].toString();
  144.             result = objs.value("person").toVariant().toMap();
  145.             qDebug()<< result["ID"].toString();
  146.             qDebug()<< result["Name"].toString();
  147.             qDebug()<< result["age"].toString();
  148.        }
  149.    }
  150.    QFile file("./test4.js");
  151.    file.open(QIODevice::WriteOnly);
  152.    QTextStream stream(&file);
  153.    stream << byte_array<<"\r\n";
  154.    file.flush();
  155.    file.close();
  156. }
  157.     return a.exec();
  158. }

离线never_forget

只看该作者 1楼 发表于: 2017-05-10
楼主你是在秀代码嘛 ?
快速回复
限100 字节
 
上一个 下一个