环境
Qt 5.4.2
功能
QT 解析,生成JSON
源码
1.mainwindow.h
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_analysis_clicked();
void on_pushButton_generate_clicked();
private:
QString sPrintfMsg;
private:
void printfJSON(QJsonObject jsonObj);
};
#endif // MAINWINDOW_H
2.mainwindow.cpp
void MainWindow::on_pushButton_analysis_clicked()
{
sPrintfMsg = "";
QJsonDocument document = QJsonDocument::fromJson(ui->textEdit_json->toPlainText().toLocal8Bit());
if(document.isObject())
{
QJsonObject jsonObject = document.object();
printfJSON(jsonObject);
}else if (document.isArray()) {
// 处理JSON数组
QJsonArray jsonArray = document.array();
sPrintfMsg = "JSON数组:";
for (int i=0; i < jsonArray.count() ; i++)
{
sPrintfMsg += jsonArray[i].toString() + ",";
}
} else {
sPrintfMsg = "无效的JSON数据";
}
ui->textEdit_analysis->setText(sPrintfMsg);
}
void MainWindow::printfJSON(QJsonObject jsonObj)
{
for (QJsonObject::iterator it = jsonObj.begin(); it != jsonObj.end(); ++it)
{
if(it.value().isObject())
{
sPrintfMsg += "------------------------------------------------\n";
sPrintfMsg += it.key() + ":\n";
printfJSON(it.value().toObject());
}else{
sPrintfMsg += it.key() + ":" + it.value().toString() + "\n";
}
}
}
void MainWindow::on_pushButton_generate_clicked()
{
QJsonObject root;
root.insert(ui->label_age->text(), ui->lineEdit_age->text());
root.insert(ui->label_name->text(), ui->lineEdit_name->text());
QJsonArray hobbiesArray;
hobbiesArray.append(ui->lineEdit_hobbies1->text());
hobbiesArray.append(ui->lineEdit_hobbies2->text());
root.insert(ui->label_hobbies->text(), hobbiesArray);
QJsonObject addressObj;
addressObj.insert(ui->label_city->text(), ui->lineEdit_city->text());
addressObj.insert(ui->label_street->text(), ui->lineEdit_street->text());
root.insert(ui->label_adress->text(), addressObj);
// 创建 JSON
QJsonDocument jsonDoc(root);
QByteArray json = jsonDoc.toJson();
ui->textEdit_generate->setText(QString(json));
}
运行