转载:http://blog.csdn.net/aasmfox/article/details/7016236
1.手动点击网页按钮C++后台响应
2.设置自动触发事件
<!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("你调用了Test"); } function GlobalObject() { this.Test=function() { alert("你调用了GlobalObject.Test"); } } function OnTest() { alert("自动触发事件"); } var globalObject = new GlobalObject(); // 两秒后模拟点击 setTimeout(function () { // IE if (document.all) { document.getElementById("clickMe").click();//找到对应元素进行点击 } // 其它浏览器 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="点击调用客户端的CppCall函数" onclick="return window.external.CppCall()" /> <br /> <br /> <p id="p1">Hello World!</p> <br /> <div id="size_info"></div> </body> </html>
比较详细的交互教程:
转载:http://blog.csdn.net/charlessimonyi/article/details/18447471
C++ 解析Json——jsoncpp
转载:http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html
转载:http://blog.csdn.net/crazyer2010/article/details/8962449
转载:http://blog.sina.com.cn/s/blog_86fe5b4401019xbt.html
转载:http://93635083.blog.sohu.com/269335462.html
转载:http://blog.csdn.net/chenscmail/article/details/10109739
转载:http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html
解析JSon串:转载:https://www.cppfans.org/1445.html
转载:https://www.cnblogs.com/chenyangchun/p/6953132.html(Json::Value isMember成员使用)
VC下使用JSONCPP(json)
Jsoncpp是个跨平台的开源库,下载地址Jsoncpp开源库
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 }
在项目开发中,后台C++使用jsoncpp解析json串,可以采用上面四种方法进行解析,上面的写法是约定好,一定存在相应的key然后拿到value值,因此存在一定的风险,如果传过来的json串某一key丢失,则会导致程序崩溃,为了保证程序的稳定性,在取key对应的value值时,做一个保护。
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不存在则打印空 }