¸üÐÂʱ¼ä:2018Äê01ÔÂ24ÈÕ14ʱ35·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
JSONµÄÈ«³ÆÊÇ”JavaScript Object Notation”£¬Òâ˼ÊÇJavaScript¶ÔÏó±íʾ·¨£¬ËüÊÇÒ»ÖÖ»ùÓÚÎı¾£¬¶ÀÁ¢ÓÚÓïÑÔµÄÇáÁ¿¼¶Êý¾Ý½»»»¸ñʽ¡£JSON ½âÎöÆ÷ºÍ JSON ¿âÖ§³ÖÐí¶à²»Í¬µÄ±à³ÌÓïÑÔ£¬Ä¿Ç°·Ç³£¶àµÄ±à³ÌÓïÑÔ¶¼Ö§³ÖJSON¡£½ÓÏÂÀ´ÀÖÓã²¥¿ÍC/C++Åàѵר¼ÒΪ´ó¼Ò½éÉÜÒ»ÏÂQtϵÄJsonµÄʹÓá£
JsonµÄÁ½Öֽṹ
JSONÓÐÁ½ÖÖ±íʾ½á¹¹£¬¶ÔÏóºÍÊý×é¡£
l ¶ÔÏó½á¹¹ÒÔ”{”´óÀ¨ºÅ¿ªÊ¼£¬ÒÔ”}”´óÀ¨ºÅ½áÊø¡£Öм䲿·ÖÓÉ0»ò¶à¸öÒÔ”£¬”·Ö¸ôµÄ”key(¹Ø¼ü×Ö)/value(Öµ)”¶Ô¹¹³É£¬¹Ø¼ü×ÖºÍÖµÖ®¼äÒÔ”£º”·Ö¸ô£¬Óï·¨½á¹¹Èç´úÂë¡£
{
key1:value1,
key2:value2,
...
}
ÆäÖйؼü×ÖÊÇ×Ö·û´®£¬¶øÖµ¿ÉÒÔÊÇ×Ö·û´®£¬ÊýÖµ£¬true,false,null,¶ÔÏó»òÊý×é¡£
l Êý×é½á¹¹ÒÔ”[”¿ªÊ¼£¬”]”½áÊø¡£ÖмäÓÉ0»ò¶à¸öÒÔ”£¬”·Ö¸ôµÄÖµÁбí×é³É£¬Óï·¨½á¹¹Èç´úÂë¡£
[
true£¬
123£¬
“hello£¬world”
]
Êý×éÖеÄÔªËØÖµÀàÐÍ¿ÉÒÔÏàͬҲ¿É²»Í¬¡£
Json¸ñʽµÄÎļþÔÚʹÓõÄʱºòÊÇÊ®·ÖÁé»îµÄ£¬ÆäÖÐÊý×éºÍ¶ÔÏóÖ®¼äÒ²ÊÇ¿ÉÒÔÏ໥ǶÌ׵쬴ó¼Ò¿ÉÒÔ°´ÕÕ×Ô¼ºµÄʵ¼ÊÐèÇóÀ´¶¨Òå³É¶ÔÓ¦µÄ¸ñʽ¡£ÀýÈ磺
[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName": "Jones" }
]
Qt5ÖÐJSONµÄÉú³ÉÓë½âÎö
Qt5 ÐÂÔö¼ÓÁË´¦Àí JSON µÄÀ࣬Óë XML Àà¿âÀàËÆ£¬¾ùÒÔ QJson ¿ªÍ·£¬ÔÚ QtCore Ä£¿éÖУ¬²»ÐèÒª¶îÍâÒýÈëÆäËüÄ£¿é¡£Qt5 ÐÂÔö¼ÓÁù¸öÏà¹ØÀࣺ

ÐèÒª´ó¼Ò×ÅÖØÕÆÎÕµÄÀàΪǰËĸö¡£
QJsonDocument
¸ÃJsonÎĵµÀàÖ÷ÒªÊǰÑjson¸ñʽµÄÊý¾Ý½âÎöΪQtÖеÄJsonÎĵµ¶ÔÏó£¬ËùÓÐÎÒÃÇÔÚʹÓøÃÀà֮ǰ£¬ÐèÒªÏȰÑÊý¾Ý×¼±¸ºÃ£º
] ½âÎöJson
1. ʹÓÃQFile¶ÔÏó¼ÓÔØÖ¸¶¨µÄJson¸ñʽÎļþ
a) QFile file(”D:\\myjson.json”);
b) file.open(QIODevice::ReadWrite);
2. ͨ¹ýQFileÀàÖеÄread·½·¨½«ÎļþÊý¾Ý¶Áµ½ÄÚ´æ
a) QByteArray json = file. readAll();
3. QJsonDocument::fromJson() ¿ÉÒÔÓÉ QByteArray ¶ÔÏó¹¹ÔìÒ»QJsonDocument ¶ÔÏó£¬ÓÃÓÚÎÒÃǵĶÁд²Ù×÷
a) QJsonDocument jsDoc;
b) jsDoc = QJsonDocument::fromJson(json.toUtf8());
QJsonObject
] Éú³Éjson¶ÔÏó
ÒòΪjson¶ÔÏóΪ¼üÖµ¶Ô£¬ËùÒÔÎÒÃÇ¿ÉÒÔʹÓÃQJsonObjectÀàµÄinsert·½·¨£¬Ïò¸ÃÀà¶ÔÏóÖвåÈëÊý¾Ý¡£
1. ´´½¨¿ÕµÄQJsonObject¶ÔÏó
a) QJsonObject obj;
2. ʹÓÃinsert·½·¨Ïò¿Õ¶ÔÏóÖвåÈëÊý¾Ý
a) obj.insert(“name”, “Jack”);
b) obj.insert(“age”, 26);
c) obj.insert(“isboy”, true);
] ½âÎöjson¶ÔÏó
1. Ê×ÏÈÐèÒªÏȵõ½Ò»¸öQJsonDocument¶ÔÏó£¬È»ºóÅжϸöÔÏóÊÇ·ñÊÇÒ»¸öjson¶ÔÏó£¬Ê¹ÓÃisObject()·½·¨
2. ʹÓÃQJsonDocumentÀàµÄobject()·½·¨¿ÉÒÔ½«jsonÎĵµ¶ÔÏóת»»ÎªJson¶ÔÏó¡£
3. ¿ÉÒÔͨ¹ýQJsonObject¶ÔÏóµÄkeyÖµµÃµ½ÆävalueÖµ£¬·ÃÎÊ·½Ê½ÎªQJsonValue value = obj[key]
4. ʹÓÃQJsonValueÀàµÄ³ÉÔ±·½·¨½«valueֵת»»ÎªÊµ¼ÊµÄÊý¾ÝÀàÐÍ¡£
QJsonDocument parse_doucment;
parse_doucment = QJsonDocument::fromJson(byte_array);
if(parse_doucment.isObject())
{
QJsonObject obj = parse_doucment.object();
if(obj.contains("name"))
{
QJsonValue name_value = obj["name"];
if(name_value.isString())
{
QString name = name_value.toString();
}
}
QJsonArray
] Éú³ÉJson
1. ´´½¨JsonÊý×飺
a) QJsonArray json;
2. ʹÓÃQJsonArrayÀàµÄinsert·½·¨²åÈëÊý¾Ý£º
a) json.insert(0, QString("Qt"));
b) json.insert(1, QString("version"));
c) json.insert(2, true);
3. ´´½¨JsonÎĵµ¶ÔÏó£º
a) QJsonDocument document;
4. ½«³õʼ»¯Íê³ÉµÄjsonÊý×é¶ÔÏóÉèÖøøJsonÎĵµ¶ÔÏó
a) document.setArray(json);
5. ½«jsonÎĵµ¶ÔÏóת»»ÎªQByteArray¶ÔÏó
a) QByteArray byte_array = document.toJson();
Éú³ÉµÄÎļþ¸ñʽ£º["Qt","version",true]
] ½âÎöJson
1. Ê×ÏÈÐèÒªÏȵõ½Ò»¸öQJsonDocument¶ÔÏó£¬È»ºóÅжϸöÔÏóÊÇ·ñÊÇÒ»¸öjsonÊý×飬ʹÓÃisArray()·½·¨¡£
2. ʹÓÃQJsonDocumentÀàµÄarray()·½·¨¿ÉÒÔ½«jsonÎĵµ¶ÔÏóת»»ÎªJson¶ÔÏó¡£
3. ¿ÉÒÔͨ¹ýQJsonArray¶ÔÏó±éÀúµÃµ½ÆäÖеÄÿ¸övalueÖµ£¬·ÃÎÊ·½Ê½Óë±éÀúÆÕͨÊý×éµÄ·½Ê½Ïàͬ¡£
4. ʹÓÃQJsonValueÀàµÄ³ÉÔ±·½·¨½«valueֵת»»ÎªÊµ¼ÊµÄÊý¾ÝÀàÐÍ¡£
QJsonDocument parse_doucment;
parse_doucment = QJsonDocument::fromJson(byte_array);
if(parse_doucment.isArray())
{
QJsonArray array = parse_doucment.array();
int size = array.size();
for(int i=0; i
{
QJsonValue value = array.at(i);
if(value.isString())
{
QString name = value.toString();
}
else if(value.isBool())
{
bool flag = value.toBool();
}
}
}
QJsonValue
ÔÚʹÓÃjson¶ÔÏó»òjsonÊý×é¶ÔÏóµÃµ½¶ÔÓ¦µÄvalueÖ®ºó£¬¸ÃvalueÖµ²¢²»ÊÇ×îÖÕµÄÊý¾ÝÀàÐͶøÊÇÒ»¸öQJsonValueÀàÐ͵ÄÊôÐÔ£¬ÎÒÃDZØÐëͨ¹ý¸Ã¶ÔÏóÅжϸÃÀàÐ͵Äʵ¼ÊÀàÐÍ£¬È»ºóÔÚ½«Æäת»»Îª¶ÔÓ¦µÄÊý¾ÝÀàÐÍ£º
] ÀàÐÍÅжÏÏà¹ØµÄ³ÉÔ±·½·¨£º
n bool isArray() const // ÊÇ·ñΪjsonÊý×é
n bool isBool() const // ÊÇ·ñΪ²¼¶ûÀàÐÍ
n bool isDouble() const // ÊÇ·ñΪ¸¡µãÀàÐÍ
n bool isNull() const // ÊÇ·ñΪ¿Õ
n bool isObject() const // ÊÇ·ñΪjson¶ÔÏó
n bool isString() const // ÊÇ·ñΪ×Ö·û´®ÀàÐÍ
] Êý¾ÝÀàÐÍת»»Ïà¹Ø³ÉÔ±·½·¨£º
n QJsonArray toArray(const QJsonArray &defaultValue) const
n QJsonArray toArray() const // תΪΪjsonÊý×é
n bool toBool(bool defaultValue = false) const // to²¼¶ûÀàÐÍ
n double toDouble(double defaultValue = 0) const
n int toInt(int defaultValue = 0) const
n QJsonObject toObject(const QJsonObject &defaultValue) const
n QJsonObject toObject() const // ת»»Îªjson¶ÔÏó
n QString toString(const QString &defaultValue = QString()) const
Éú³ÉJson
1. ´´½¨JsonObject¶ÔÏó»òÊý×é(ÔÙ´ÎÒÔ¶ÔÏó¾ÙÀý)
a) QJsonObject json;
2. Íùjson¶ÔÏóÖÐÌí¼Ó¼üÖµ¶Ô
a) json.insert("name", QString("Qt"));
b) json.insert("version", 5);
c) json.insert("windows", true);
3. ´´½¨JsonÎĵµ¶ÔÏó
a) QJsonDocument document;
4. ½«Json¶ÔÏó»òÊý×éÉèÖøøjsonÎĵµ¶ÔÏó
a) document.setObject(json); // Êý×飺setArray(array)
5. ½«Îĵµ¶ÔÏóת»»ÎªQByteArrayÀàÐ͵ÄÊý¾Ý
a) QByteArray byte_array = document.toJson();
6. ½«¸ÃÊý¾Ýͨ¹ýQFile¶ÔÏó±£´æÎª´ÅÅÌÎļþ¡£
×îÖÕ¸ñʽ£º{"name": "Qt","version": 5,"windows": true}
ºÃÁË£¬½ñÌìµÄµÄ֪ʶµã£¬ÀÖÓã²¥¿ÍC/C++Åàѵר¼Ò¾Í¸ø´ó¼Ò·ÖÏíµ½ÕâÀϣÍû´ó¼Ò¶à¶àÁ·Ï°£¬×£´ó¼ÒѧϰÓä¿ì£¡
±±¾©Ð£Çø