ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

C/C++£º½ÌÄã¿ìËٸ㶨QtϵÄJsonÎļþʹÓÃ

¸üÐÂʱ¼ä: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++Åàѵר¼Ò¾Í¸ø´ó¼Ò·ÖÏíµ½ÕâÀϣÍû´ó¼Ò¶à¶àÁ·Ï°£¬×£´ó¼ÒѧϰÓä¿ì£¡

±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍC/C++ѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍC/C++ѧԺ
Ê×·¢£ºhttp://www.itcast.cn/c/
0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡


  • ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿