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不存在则打印空
        }
  • 相关阅读:
    hihoCoder 1148 2月29日
    Java 之常用运算符(3)
    Java 之变量和常量(2)
    Codeforces Round #414 A. Bank Robbery
    Codeforces Round #413 B. T-shirt buying
    C++中 set(集合容器)的用法
    Codeforces Round #411 B. 3-palindrome
    Codeforces Round #411 A. Fake NP
    Codeforces Round #413 A. Carrot Cakes
    Codeforces Round #412 B. T-Shirt Hunt
  • 原文地址:https://www.cnblogs.com/chechen/p/5594937.html
Copyright © 2011-2022 走看看