QJson 使用
来源:互联网 发布:淘宝动漫周边店成本 编辑:程序博客网 时间:2024/04/30 23:33
Converting JSON to QVariant
Converting JSON's data to QVariant instance is really simple:
1 // create a Parser instance2 QJson::Parser parser;3 4 bool ok;5 6 // json is a QString containing the data to convert7 QVariant result = parser.parse (json, &ok);
Suppose you're going to convert this JSON data:
1 { 2 "encoding" : "UTF-8", 3 "plug-ins" : [ 4 "python", 5 "c++", 6 "ruby" 7 ], 8 "indent" : { "length" : 3, "use_space" : true } 9 }
The following code would convert the JSON data and parse it:
1 QJson::Parser parser; 2 bool ok; 3 4 QVariantMap result = parser.parse (json, &ok).toMap(); 5 if (!ok) { 6 qFatal("An error occurred during parsing"); 7 exit (1); 8 } 9 10 qDebug() << "encoding:" << result["encoding"].toString();11 qDebug() << "plugins:";12 13 foreach (QVariant plugin, result["plug-ins"].toList()) {14 qDebug() << "\t-" << plugin.toString();15 }16 17 QVariantMap nestedMap = result["indent"].toMap();18 qDebug() << "length:" << nestedMap["length"].toInt();19 qDebug() << "use_space:" << nestedMap["use_space"].toBool();
The output would be:
1 encoding: "UTF-8"2 plugins:3 - "python"4 - "c++"5 - "ruby"6 length: 37 use_space: true
Converting QVariant to JSON
Converting a QVariant instance into a JSON object is really simple:
1 QVariantList people; 2 3 QVariantMap bob; 4 bob.insert("Name", "Bob"); 5 bob.insert("Phonenumber", 123); 6 7 QVariantMap alice; 8 alice.insert("Name", "Alice"); 9 alice.insert("Phonenumber", 321);10 11 people << bob << alice;12 13 QJson::Serializer serializer;14 QByteArray json = serializer.serialize(people);15 16 qDebug() << json;
The output will be:
1 "[ { "Name" : "Bob", "Phonenumber" : 123 },2 { "Name" : "Alice", "Phonenumber" : 321 } ]"
QObjct serialization and vice-versa
It's also possible to serialize a QObject instance to JSON. All the class attributes defined as properties will be serialized. Suppose the declaration of Person class looks like this:
1 class Person : public QObject 2 { 3 Q_OBJECT 4 5 Q_PROPERTY(QString name READ name WRITE setName) 6 Q_PROPERTY(int phoneNumber READ phoneNumber WRITE setPhoneNumber) 7 Q_PROPERTY(Gender gender READ gender WRITE setGender) 8 Q_PROPERTY(QDate dob READ dob WRITE setDob) 9 Q_ENUMS(Gender)10 11 public:12 Person(QObject* parent = 0);13 ~Person();14 15 QString name() const;16 void setName(const QString& name);17 18 int phoneNumber() const;19 void setPhoneNumber(const int phoneNumber);20 21 enum Gender {Male, Female};22 void setGender(Gender gender);23 Gender gender() const;24 25 QDate dob() const;26 void setDob(const QDate& dob);27 28 private:29 QString m_name;30 int m_phoneNumber;31 Gender m_gender;32 QDate m_dob;33 };
The following code will serialize an instance of Person to JSON:
1 Person person; 2 person.setName("Flavio"); 3 person.setPhoneNumber(123456); 4 person.setGender(Person::Male); 5 person.setDob(QDate(1982, 7, 12)); 6 7 QVariantMap variant = QObjectHelper::qobject2qvariant(&person); 8 Serializer serializer; 9 qDebug() << serializer.serialize( variant);
The generated output will be:
1 { "dob" : "1982-07-12",2 "gender" : 0,3 "name" : "Flavio",4 "phoneNumber" : 123456 }
It's also possible to initialize a QObject using the values stored inside of a QVariantMap. Suppose you have the following JSON data stored into a QString:
1 { "dob" : "1982-07-12",2 "gender" : 0,3 "name" : "Flavio",4 "phoneNumber" : 123456 }
The following code will initialize an already allocated instance of Person using the JSON values:
1 Parser parser;2 QVariant variant = parser.parse(json);3 4 Person person;5 QObjectHelper::qvariant2qobject(variant.toMap(), &person);
API
The full documentation of QJson can be found here.
- QJson 使用
- QJson使用
- QJson的使用
- 使用 QJson 处理 JSON
- Qt4 使用QJson库
- Qt-----使用QJson库
- QJson的简单使用
- 使用 QJson 处理 JSON
- QJson的使用
- qjson的编译和使用
- 使用 Qjson 解析 JSON 数据的方法
- 使用QJson解析Qt通过UDP发送的JSON数据
- QJson应用
- QJson编译
- QJson编译
- qjson编译
- QT中QJson库的使用以及json文件的操作
- QT使用QJson生成解析,简单的JSON,复杂的Json使用方法
- 使用 DB2 对象:创建模式、表和视图
- 一个机器上同时安装有两个版本oracle时的pl/sql developer设置
- 如何在一周内摸清一个行业?
- 算法导论 4.1-5
- 解决TXT乱码问题
- QJson 使用
- 用友CDM系统,将货位间商品移库单(一步)修改为内调出入库单(一步)方法使用
- 在DP中使用"滚动数组"
- Parsing JSON with QT using standard QT library
- 409. The fox preys farest from home. 兔子不吃窝边草
- Linux的分页机制
- JSON Spirit 中文支持(转)
- 设置win7任务栏程序图标显示方式
- IT技术人的成长