js与C++交互及C++解析json
轉(zhuǎn)載:http://zhidao.baidu.com/link?url=LLuWzwMmpfVcQeSGv1CrAfRXpnZaetm9xypqwMW6zxLhhKES-rITAsG0-Ku-bSMAc2nVoSFk1tOJ0biPcQIoHK
轉(zhuǎn)載:http://blog.csdn.net/aasmfox/article/details/7016236
1.手動點擊網(wǎng)頁按鈕C++后臺響應(yīng)
2.設(shè)置自動觸發(fā)事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title>Untitled Page</title><style type="text/css">#button1{width: 306px;}#button2{width: 306px;}</style><script language="javascript" type="text/javascript">function Test(){alert("你調(diào)用了Test");}function GlobalObject(){this.Test=function(){alert("你調(diào)用了GlobalObject.Test");}}function OnTest() {alert("自動觸發(fā)事件");}var globalObject = new GlobalObject();// 兩秒后模擬點擊 setTimeout(function () {// IEif (document.all) {document.getElementById("clickMe").click();//找到對應(yīng)元素進(jìn)行點擊}// 其它瀏覽器else {var e = document.createEvent("MouseEvents");e.initEvent("click", true, true);document.getElementById("clickMe").dispatchEvent(e);}}, 2000);</script> </head> <body> 測試頁面<br /> <br /><a href="#" id="clickMe" onclick="OnTest();">link</a> <input id="button1" type="button" value="點擊演示在C++中處理按鈕的onclick事件" /> <br /> <br /> <input id="button2" type="button" value="點擊調(diào)用客戶端的CppCall函數(shù)" onclick="return window.external.CppCall()" /> <br /> <br /><p id="p1">Hello World!</p><br /> <div id="size_info"></div> </body> </html>?
js與C++交互demo
?
比較詳細(xì)的交互教程:
轉(zhuǎn)載:http://blog.csdn.net/charlessimonyi/article/details/18447471
?
C++ 解析Json——jsoncpp
轉(zhuǎn)載:http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html
轉(zhuǎn)載:http://blog.csdn.net/crazyer2010/article/details/8962449
轉(zhuǎn)載:http://blog.sina.com.cn/s/blog_86fe5b4401019xbt.html
轉(zhuǎn)載:http://93635083.blog.sohu.com/269335462.html
轉(zhuǎn)載:http://blog.csdn.net/chenscmail/article/details/10109739
轉(zhuǎn)載:http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html
?解析JSon串:轉(zhuǎn)載:https://www.cppfans.org/1445.html
轉(zhuǎn)載:https://www.cnblogs.com/chenyangchun/p/6953132.html(Json::Value isMember成員使用)
VC下使用JSONCPP(json)
Jsoncpp是個跨平臺的開源庫,下載地址Jsoncpp開源庫
使用JsonCpp的Demo
3.使用jsoncpp幾個例子:
1 void Myparse1() 2 { 3 const char* str = "{\"result\":{\"id\":\"cc1521c7e1084d90bb26c6a0ee965c8c\",\"mLocktime\":0,\"mTouchid\":\"0\",\"modifyTime\":1480753775000},\"status\":\"ok\"}"; 4 Json::Reader reader; 5 Json::Value root; 6 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 7 { 8 std::string str = root["result"]["id"].asString();//得到 9 std::string str1 = root["status"].asString();//得到ok 10 11 } 12 } 13 14 void Myparse2() 15 { 16 const char* str = "[{\"status\":\"ok\"},{\"MLocktime\":0,\"MTouchid\":\"0\",\"id\":\"cc1521c7e1084d90bb26c6a0ee965c8c\",\"modifyTime\":\"2016-12-03 16:29:35\"}]"; 17 Json::Reader reader; 18 Json::Value root; 19 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 20 { 21 int size = root.size(); 22 std::string str = root[size-2]["status"].asString(); 23 std::string str1 = root[size-1]["id"].asString(); 24 25 } 26 } 27 28 void Myparse3() 29 { 30 const char* str = "[{\"age\":24},{\"age\":1},{\"age\":22},{\"age\":24},{\"age\":16}]"; 31 Json::Reader reader; 32 Json::Value root; 33 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 34 { 35 int size = root.size(); 36 int age = root[size-5]["age"].asUInt();//得到24 37 38 } 39 } 40 41 void Myparse4() 42 { 43 const char* str = "{\"friendArray\":[{\"age\":24},{\"age\":1},{\"age\":22},{\"age\":24},{\"age\":16}]}"; 44 Json::Reader reader; 45 Json::Value root; 46 if (reader.parse(str, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 47 { 48 int size = root["friendArray"].size(); 49 int age = root["friendArray"][size-1]["age"].asInt(); 50 51 } 52 }?在項目開發(fā)中,后臺C++使用jsoncpp解析json串,可以采用上面四種方法進(jìn)行解析,上面的寫法是約定好,一定存在相應(yīng)的key然后拿到value值,因此存在一定的風(fēng)險,如果傳過來的json串某一key丟失,則會導(dǎo)致程序崩潰,為了保證程序的穩(wěn)定性,在取key對應(yīng)的value值時,做一個保護(hù)。
string strJson = "{\"msg\":\"正常\", \"code\":\"A0000\", \"data1\":1,\"data2\":3.1415927, \"data3\":-4}";Json::Reader reader;Json::Value root;if (reader.parse(strjson, root)) // reader將Json字符串解析到root,root將包含Json里所有子元素 {int size = root.size();std::string str = root["msg"].asString();//得到"正常",但msg不存在這樣取程序會崩潰//root對象中有這個key返回true 否則返回false std::string str2 = root.isMember("msg")?root["msg"].asString():"";std::cout <<"uid:"<< str2 << std::endl;//msg存在就打印"正常",若msg不存在則打印空}?
總結(jié)
以上是生活随笔為你收集整理的js与C++交互及C++解析json的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虛擬磁盤的格式區別
- 下一篇: const constexpr C++