zoukankan      html  css  js  c++  java
  • js与C++交互及C++解析json

    转载:http://zhidao.baidu.com/link?url=LLuWzwMmpfVcQeSGv1CrAfRXpnZaetm9xypqwMW6zxLhhKES-rITAsG0-Ku-bSMAc2nVoSFk1tOJ0biPcQIoHK

    转载: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>

    js与C++交互demo

    比较详细的交互教程:

    转载: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开源库

    使用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 }

     在项目开发中,后台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不存在则打印空
        }
  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/chechen/p/5594937.html
Copyright © 2011-2022 走看看