JSON
JavaScript Object Notation£ºÊÇJavaScriptµÄ×Ó¼¯£¬Ö±½ÓÓü´¿É¡£²»ÐèÒªÈκÎÌØÊâµÄ API »ò¹¤¾ß°ü
¸ñʽ£º
{¡°Ãû¡±:¡±Öµ¡±} ÃûÖµ¶Ô£¬Èç¹ûÓжà¸ö£¬¼´Êý×éÔò[]ǶÌ×¼´¿É¡£
{¡°name1¡±:[{¡°name1.1¡±:¡±value1.1¡±},{¡°name1.2¡±:¡±value1.2¡±}]}
{ "people": //Ãû
[ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]//Öµ
}
{ "programmers"://¶à¸öÃûÖµ¶Ô
[ {"firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }],
"authors":
[{"firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }]
}
¸ñʽÃèÊöÈçÏ£º
¶ÔÏóÊÇÒ»¸öÎÞÐòµÄ¡°¡®Ãû³Æ/Öµ¡¯¶Ô¡±¼¯ºÏ¡£Ò»¸ö¶ÔÏóÒÔ¡°{¡±£¨×óÀ¨ºÅ£©¿ªÊ¼£¬¡°}¡±£¨ÓÒÀ¨ºÅ£©½áÊø¡£Ã¿¸ö¡°Ãû³Æ¡±ºó¸úÒ»¸ö¡°:¡±£¨Ã°ºÅ£©£»¡°¡®Ãû³Æ/Öµ¡¯ ¶Ô¡±Ö®¼äʹÓá°,¡±£¨¶ººÅ£©·Ö¸ô¡£
Êý×éÊÇÖµ£¨value£©µÄÓÐÐò¼¯ºÏ¡£Ò»¸öÊý×éÒÔ¡°[¡±£¨×óÖÐÀ¨ºÅ£©¿ªÊ¼£¬¡°]¡±£¨ÓÒÖÐÀ¨ºÅ£©½áÊø¡£ÖµÖ®¼äʹÓá°,¡±£¨¶ººÅ£©·Ö¸ô¡£
Öµ£¨value£©¿ÉÒÔÊÇË«ÒýºÅÀ¨ÆðÀ´µÄ×Ö·û´®£¨string£©¡¢ÊýÖµ(number)¡¢true¡¢false¡¢ null¡¢¶ÔÏó£¨object£©»òÕßÊý×飨array£©¡£ÕâЩ½á¹¹¿ÉÒÔǶÌס£
¼´Ò»¸öÔªËØÒ»¸ö{}£¬¶à¸öÔªËØ¿ÉÒÔдÔÚÒ»¸ö{}»òÓÃ[]À´ÊµÏÖ¡£Ò²¾ÍÊÇ˵¡°Ãû¡±¾ÍÏ൱ÓÚÒ»¸ö±äÁ¿Ãû¡£
ÔÚjavascriptÀïÃæÊ¹ÓÃJSON£º´Ëʱpeople±äÁ¿¾Í²»ÔÙÊÇJSON¸ñʽµÄ×Ö·û´®Êý¾ÝÁË¡£
Var people =
{ "programmers"://¶à¸öÃûÖµ¶Ô
[ {"firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }],
"authors":
[{"firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }]
}//ÕâÑù¾Í¿ÉÒÔÁË£¬¾ÍÖ±½Ó°ÑJSON¸ñʽµÄÊý¾Ý¸øjavascriptµÄÒ»¸ö±äÁ¿¡£
·ÃÎÊJSONÀïÃæµÄÖµ£º
people.programmers[0].lastName; Êý×éË÷ÒýÊÇ´ÓÁ㿪ʼµÄ¡£½á¹ûÊÇ×Ö·û´®ÖµMcLaughlin
ÐÞ¸ÄÀïÃæµÄÖµ£º
people.programmers[0].lastName = ¡°new_Value¡±;
ת»»»áJSON×Ö·û´®£º
String newJSONtext = people.toJSONString();//²»ÊÇjavascriptΪÈõÀàÐÍô£¿ÔõôÓÃString
¿ÉÒÔ½« ÈκÎJavaScript ¶ÔÏóת»»Îª JSON Îı¾£¬ÈçÏ£º
String myObjectJSON = myObject.toJSONString();
ÍøÂç½Ì³Ì£º
Eval():¿ÉÒÔʹÓÃeval()·½·¨£¬ÓÃÓÚÖ´ÐÐÒ»¸öjavascript¶Î£¬·µ»ØÖ´Ðнá¹û¡£¶ÔÓÚXML£¬Ê¹ÓÃDOMÀ´´¦Àí¡£JSON±ÈXMLÔÚAjax·½Ãæ¸ü¿ì¡£ÓÃeval()´¦ÀíJSON×Ö·û´®¡£
JSON Óï·¨¹æÔò
JSON Óï·¨ÊÇ JavaScript ¶ÔÏó±íʾ·¨Óï·¨µÄ×Ó¼¯¡£
¡¤ Êý¾ÝÔÚÃû³Æ/Öµ¶ÔÖÐ ¡± firstName¡±:¡±Jone¡± µÈ¼ÛJSµÄfirstName=¡±Jone¡±
¡¤ Êý¾ÝÓɶººÅ·Ö¸ô
¡¤ »¨À¨ºÅ±£´æ¶ÔÏó
¡¤ ·½À¨ºÅ±£´æÊý×é
JSON Öµ
JSON Öµ¿ÉÒÔÊÇ£º(¾ÍÊÇÃûÖµ¶ÔµÄÖµ)
¡¤ Êý×Ö£¨ÕûÊý»ò¸¡µãÊý£©
¡¤ ×Ö·û´®£¨ÔÚË«ÒýºÅÖУ©
¡¤ Âß¼Öµ£¨true »ò false£©
¡¤ Êý×飨ÔÚ·½À¨ºÅÖУ©
¡¤ ¶ÔÏó£¨ÔÚ»¨À¨ºÅÖУ© £º¾ÍÊÇ{ÀïÃæÊÇÃûÖµ¶Ô£¬»òÊý×飬¶ÔÏóµÈ}£»
¡¤ null
JSON 1c40 ¼þ
¡¤ JSON ÎļþµÄÎļþÀàÐÍÊÇ ".json"
¡¤ JSON Îı¾µÄ MIME ÀàÐÍÊÇ "application/json"
JSONµÄ³£ÓÃÓ÷¨ÊÇ´Óweb ·þÎñÆ÷¶ÁJSON×Ö·û´®£¬»òÕß˵ÊǺǫ́´«¸øÇ°Ì¨¡£
´Ó֮ǰ¿ÉÒÔÖªµÀJSON¾ÍÊǶÔÏóµÄ·ÃÎÊ·Åʽ£¬µ«ÊÇÔÚJSÖÐÈ´ÊÇÒ»¸ö×Ö·û´®£¬ÄÇôҪ×÷Ϊ¶ÔÏóÔõô°ì£¿£¿¾ÍÓÃeval()·½·¨±àÒëJSON×Ö·û´®£¬·µ»ØµÄ¶ÔÏó¾Í¿ÉÒÔÁË¡£
var txt = '{ "employees" : [' +
'{ "firstName":"Bill" , "lastName":"Gates" },' +
'{ "firstName":"George" , "lastName":"Bush" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
var obj = eval ("(" + txt + ")");//ΪÁ˱ÜÃâÓï·¨´í£¬ÐèÒª¼ÓÀ¨ºÅ¡£
obj.employees[1].firstName//¾Í¿ÉÒÔ·ÃÎÊ»ò¸³ÖµÁË¡£
ÈÃJSON¿ÉÒÔ´«µÝµ½·þÎñÆ÷£¬ÄÇô¾ÍÒª×ñÑGWT¸ñʽ£¬ÓÉÓÚ²»ÄÜÖ±½ÓÊÇGWTµÄ±ê×¼¸ñʽ£¬ÄÇô¾ÍÐèҪһЩ¶îÍâµÄ²Ù×÷£º
µÚÒ»£¬ÒýÓÃHTTP ºÍJSON Ö§³Ö¡£
µÚ¶þ£¬ÔÚ¿Í»§¶Ë´´½¨JSON Êý¾Ý£¬Ìá½»µ½·þÎñÆ÷
µÚÈý£¬ÔÚ·þÎñÆ÷ÉÏÖØÐ´Êý¾Ý¸ñʽ½âÎöµÄ´úÂ룬ʹ֧֮³ÖJSON ¸ñʽµÄÊý¾Ý
µÚËÄ£¬ÔÚ·þÎñÆ÷ÉÏ×éÖ¯JSON ¸ñʽµÄÊý¾Ý£¬·µ»Ø¸ø¿Í»§¶Ë¡£
µÚÎ壬¿Í»§¶Ë½âÎö·þÎñÆ÷´«»ØµÄJSON Êý¾Ý£¬ÕýÈ·µÄÏÔʾ¡£
Ïê¼ûJSON½Ì³Ì.pdf¡£
ÕâÀï¾ÍÓÐÁËÀàÐÍÁË£ºJSONArray,JSONBoolean,JSONException,JSONObject µÈµÈ¡£Ò»Õû¸öJSON¶¼¿ÉÒÔÓÃJSONObjectÀ´×°¡£¼û½Ì³Ì2Ò³¡£
JSONObject input = new JSONObject();
JSONString value = new JSONString(¡°value¡±);
JsonдÍêÖ®ºó£¬Óöµ½µÄ×î¶àµÄÎÊÌâ¾ÍÊǽâÎö´íÎ󣬸ñʽ²»¶Ô£¬ÄÇÔõôµ÷£¿
ÏÂÃæ¸ø¸öÔÚÏßУÑéµÄ¹¤¾ß£¬Ð´ÍêÖ®ºóУÑéһϾÍÍê±ÏÁË£º
¶ÔÓÚC++½âÎöJson£¬ÏÂÃæ¸øÒ»¸öÍøÉϵÄÎÄÕ£¬ºÜºÃÓãº
¡¾×ª¡¿C++½âÎöJSONµÄºÃÎÄÕÂ
ʹÓÃC++´¦ÀíJSONÊý¾Ý½»»»¸ñʽ
Ò»¡¢ÕªÒª
JSONµÄÈ«³ÆÎª£ºJavaScript Object Notation£¬¹ËÃû˼Ò壬JSONÊÇÓÃÓÚ±ê¼ÇJavascript¶ÔÏóµÄ£¬JSON¹Ù·½µÄ½âÊÍΪ£ºJSONÊÇÒ»ÖÖÇáÁ¿¼¶µÄÊý¾Ý´«Êä¸ñʽ¡£
±¾ÎIJ¢²»Ïêϸ½éÉÜJSON±¾ÉíµÄϸ½Ú£¬Ö¼ÔÚÌÖÂÛÈçºÎʹÓÃC++ÓïÑÔÀ´´¦ÀíJSON¡£¹ØÓÚJSON¸ü¾ßÌåµÄÐÅÏ¢£¬¿É²Î¼ûJSON¹ÙÍø£º¡£
¶þ¡¢±¾ÎÄÑ¡Ôñ´¦ÀíJSONµÄC++¿â
±¾ÎÄÑ¡ÔñÒ»¸öµÚÈý·½¿âjsoncppÀ´½âÎöJSON¡£jsoncppÊDZȽϳöÃûµÄC++ JSON½âÎö¿â¡£ÔÚJSON¹ÙÍøÒ²ÊÇÊ×ÍÆµÄ¡£
ÏÂÔØµØÖ·Îª£º¡£±¾ÎÄʹÓõÄjsoncpp°æ±¾Îª£º0.5.0¡£
Èý¡¢jsoncppÔÚWindowsϵıàÒë
ҪʹÓõÚÈý·½Ô´Âë¿â£¬µÚÒ»²½ÉÙ²»Á˵ľÍÊDZàÒ룬½«Ô´ÂëÎļþ±àÒë³ÉÎÒÃÇ·½±ãʹÓõĶ¯Ì¬Á´½Ó¿â¡¢¾²Ì¬Á´½Ó¿â»òÕß¾²Ì¬µ¼Èë¿â[1]¡£
jsconcpp½øÐÐJSON½âÎöµÄÔ´ÂëÎļþ·Ö²¼ÔÚinclude/json¡¢src/lib_jsonÏ¡£ÆäʵjsoncppÔ´Âë²¢²»¶à£¬ÎªÁË·½±ã²úÆ·¹ÜÀí£¬´Ë´¦Ã»±ØÒª½«Æä±àÒëΪ¶¯Ì¬Á´½Ó¿â»òÕß¾²Ì¬µ¼Èë¿â£¬ËùÒÔÎÒÃÇÑ¡ÔñʹÓþ²Ì¬Á´½Ó¿â[2]¡£
jsoncppÒѾ´¦ÀíµÄºÜÍêÉÆÁË£¬ËùÓбàÒëÑ¡Ïî¶¼ÒѾÅäÖú㬴ò¿ªmakefiles/vs71/jsoncpp.sln±ã¿ÉÒÔ¿ªÊ¼±àÒ루ĬÈÏÊÇʹÓÃVS2003±àÒëÆ÷µÄ£¬´ò¿ªÊ±Ö±½Ó°´ÕÕVS2005Ìáʾת»»¼´¿É£©¡£
ËÄ¡¢jsoncppʹÓÃÏê½â
jsoncppÖ÷Òª°üº¬ÈýÖÖÀàÐ͵Äclass£ºValue¡¢Reader¡¢Writer¡£jsoncppÖÐËùÓжÔÏó¡¢ÀàÃû¶¼ÔÚnamespace JsonÖУ¬°üº¬json.h¼´¿É¡£
Json::ValueÖ»ÄÜ´¦ÀíANSIÀàÐ͵Ä×Ö·û´®£¬Èç¹ûC++³ÌÐòÊÇÓÃUnicode±àÂëµÄ£¬×îºÃ¼ÓÒ»¸öAdaptÀàÀ´ÊÊÅä¡£
1¡¢Value
Json::ValueÊÇjsoncppÖÐ×î»ù±¾¡¢×îÖØÒªµÄÀ࣬ÓÃÓÚ±íʾ¸÷ÖÖÀàÐ͵ĶÔÏó£¬jsoncppÖ§³ÖµÄ¶ÔÏóÀàÐͿɼûJson::ValueTypeö¾ÙÖµ¡£
¿ÉÈçÏÂÊÇÓÃJson::ValueÀࣺ
Json::Value json_temp; //ÁÙʱ¶ÔÏ󣬹©ÈçÏ´úÂëʹÓÃ
json_temp["name"] = Json::Value("huchao");
json_temp["age"] = Json::Value(26);
Json::Value root; //±íʾÕû¸öjson¶ÔÏó
root["key_string"] = Json::Value("value_string"); //н¨Ò»¸öKey£¨ÃûΪ£ºkey_string£©£¬¸³Óè×Ö·û´®Öµ£º"value_string"¡£
root["key_number"] = Json::Value(12345); //н¨Ò»¸öKey£¨ÃûΪ£ºkey_number£©£¬¸³ÓèÊýÖµ£º12345¡£
root["key_boolean"] = Json::Value(false); //н¨Ò»¸öKey£¨ÃûΪ£ºkey_boolean£©£¬¸³ÓèboolÖµ£ºfalse¡£
root["key_double"] = Json::Value(12.345); //н¨Ò»¸öKey£¨ÃûΪ£ºkey_double£©£¬¸³ÓèdoubleÖµ£º12.345¡£
¡¡