js与C++交互及C++解析json
转载: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几个例子:
void Myparse1()
{
const char* str = "{\"result\":{\"id\":\"cc1521c7e1084d90bb26c6a0ee965c8c\",\"mLocktime\":0,\"mTouchid\":\"0\",\"modifyTime\":1480753775000},\"status\":\"ok\"}";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
std::string str = root["result"]["id"].asString();//得到
std::string str1 = root["status"].asString();//得到ok }
} void Myparse2()
{
const char* str = "[{\"status\":\"ok\"},{\"MLocktime\":0,\"MTouchid\":\"0\",\"id\":\"cc1521c7e1084d90bb26c6a0ee965c8c\",\"modifyTime\":\"2016-12-03 16:29:35\"}]";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
int size = root.size();
std::string str = root[size-]["status"].asString();
std::string str1 = root[size-]["id"].asString(); }
} void Myparse3()
{
const char* str = "[{\"age\":24},{\"age\":1},{\"age\":22},{\"age\":24},{\"age\":16}]";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
int size = root.size();
int age = root[size-]["age"].asUInt();//得到24 }
} void Myparse4()
{
const char* str = "{\"friendArray\":[{\"age\":24},{\"age\":1},{\"age\":22},{\"age\":24},{\"age\":16}]}";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
int size = root["friendArray"].size();
int age = root["friendArray"][size-]["age"].asInt(); }
}
在项目开发中,后台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不存在则打印空
}
js与C++交互及C++解析json的更多相关文章
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
先看一下我要实现的功能界面: 这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...
- js读取解析JSON类型数据(转)
谢谢博主,转自http://blog.csdn.net/beyond0851/article/details/9285771 一.什么是JSON? JSON(JavaScript Object Not ...
- 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...
- JS解析json数据并将json字符串转化为数组的实现方法
json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...
- json进阶(一)js读取解析JSON类型数据
js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...
- 利用fastjson解析json并通过js&ajax实现页面的无跳转刷新
1.json是一种优秀的数据格式,在移动开发和web开发中经常用到,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新 2,新建一 ...
- js中eval详解,用Js的eval解析JSON中的注意点
先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...
- 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中
http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...
随机推荐
- 2013年各大小IT公司待遇
2013年各大小IT公司待遇(初版 摘自好网)本人西电硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名 ...
- Android使用ZXing生成带图片的二维码
效果图如下: 制作过程很简单的就是在原始的二维码图片上添加一个logn图标,代码的注释写得很详细,也就不给大家啰嗦了 package com.example.day44_02_qrcodewithlo ...
- centOS6.6升级gcc4.8
最近想升级mesos0.23.0,结果编译mesos0.23.0需要gcc4.8+,可是centOS6.6最高版本的gcc也只到4.4.7版本,只好手动升级一下了. 下载4.8.2源码 wget ft ...
- :nth-child()和:nth-of-type(n)区别
ele:nth-child(n) 父元素下第n个元素且这个元素为ele ele:nth-of-type(n) 指父元素下第n个ele元素
- -XX:+PrintGCTimeStamps 打印CG发生的时间戳
-XX:+PrintGCTimeStamps –打印CG发生的时间戳 –[GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374 ...
- 【转】转换到 COFF 期间失败: 文件无效或损坏
不知怎么本来编译好好的VS2010环境,忽然出现“转换到 COFF 期间失败: 文件无效或损坏”的链接错误.花了好多天,试了好多方法,最终解决了这个问题. 现在罗列一下这几种解决方案: 方案1 ...
- 为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)[转]
前段时间,写了一个开发.实施.服务费用计算三部曲. 水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八) 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九 ...
- Servlet工作原理(转)
Servlet运行在Servlet容器中,由容器负责Servlet实例的查找及创建工作,并按照Servlet规范的规定调用Servlet的一组方法,这些方法也叫生命周期的方法.具体调用过程如下图所示: ...
- owner window 和 parent window 有什么区别?
1.Pop-up窗口: 一个弹出窗口是必须具有WS_POPUP属性的窗口,弹出窗口只能是一个Top-Level窗口,不能是子窗口,弹出窗口多用于对话框和消 ...
- Erlang-特性
一.模式匹配: 模式匹配作为Erlang的基础,用来完成很多不同的任务:可以用它从数据结构中提取字段值,在函数中进行流程控制,或者当你向一个进程发送消息时,从并行程序刷选那些需要处理的消息: 二.函数 ...