CEF 支持JSON操作
转载:https://blog.csdn.net/foruok/article/details/50687864(解析json)
转载:https://blog.csdn.net/foruok/article/details/51132462(构建json)
在CEF项目开发中避免不了要使用json格式的数据,为了解决对json的使用,一般都是引入第三方开源库JsonCpp、cJson等,问题是解决了;但这样会增加客户端的体积,查阅资料发现CEF的确强大,它支持对json的操作,如果不想引入第三方库,可以使用CEF操作JSON。
Cef提供了JSON解析功能,在cef_parser.h文件内有三个JSON相关的方法:
- CefParseJSON
- CefParseJSONAndReturnError
- CefWriteJSON
1.CEF解析JSON
void CMainFrameWnd::TestParseJson()
{
std::wstring wstrJson = _T("{");
wstrJson += _T("\"uid\" : \"chechenluoyang@163.com\",");
wstrJson += _T("\"fileName\" : \"梅西.txt\",");
wstrJson += _T("\"time\" : \"2017.07.29 10:55:22\",");
wstrJson += _T("\"type\" : \"Libcurl HTTP POST JSON \",");
wstrJson += _T("\"authList\" : \"test\"");
wstrJson += _T("}"); CefRefPtr<CefValue> jsonObject = CefParseJSON(wstrJson, JSON_PARSER_ALLOW_TRAILING_COMMAS); if (jsonObject->IsValid())
{
CefRefPtr<CefDictionaryValue> dict = jsonObject->GetDictionary();
CefString strUid = dict->GetString("uid");//得到chechenluoyang@163.com
CefString strFilename = dict->GetString("fileName");//得到梅西.txt
}
}
注:因为我的工程属性设置的是Unicode编码,所以在用字符串拼接的时候用wstring来存储,不然中文会乱码。
2.构建JSON
void CMainFrameWnd::TestWriteJson()
{
CefRefPtr<CefDictionaryValue> pDict = CefDictionaryValue::Create(); pDict->SetInt("id", );
pDict->SetString("name", _T("梅西")); CefRefPtr<CefValue> pValue = CefValue::Create(); pValue->SetDictionary(pDict);
std::wstring strJson = CefWriteJSON(pValue, JSON_WRITER_DEFAULT);
}
生成的JSON串:
{
"id":9527,
"name":"梅西"
}
注:因为Unicode编码,json的key value都是CefString,要用宽字符设置,最后返回的json字符串也是CefString,也要用wstring保存,不然中文会乱码。
CEF 支持JSON操作的更多相关文章
- Json操作(DynamicJson)
Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...
- 【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API
原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- python 历险记(四)— python 中常用的 json 操作
目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编码和解码? 常用的 json 操作有哪些? json 操作需要什么库? 如何 ...
- 【mysql】字段支持JSON类型
mysql从5.7开始已经支持JSON类型的字段. 支持的操作:添加,修改,置空,子key添加,子key重置,子key删除,通过子key查找等. 但是这里和普通字段的修改和查找不同,涉及到一些JSON ...
- kbmmw 中JSON 操作入门
现在各种系统中JSON 用的越来越多.delphi 也自身支持JSON 处理. 今天简要说一下kbmmw 内部如何使用和操作JSON. kbmmw 中json的操作是以TkbmMWJSONStream ...
- flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
flask, SQLAlchemy, sqlite3 实现 RESTful API, 同时支持form操作. 前端与后台的交互都采用json数据格式,原生javascript实现的ajax.其技术要点 ...
- 分享基于.NET动态编译&Newtonsoft.Json封装实现JSON转换器(JsonConverter)原理及JSON操作技巧
看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而 ...
- flask修改flask_wtf使其支持json数据的validation验证
flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...
随机推荐
- IIC稳定性.VBS
Sub Main Dim cnt Dim delay Dim time Dim atttime atttime = 20 delay = 3000 time = 50 crt.screen.Send ...
- VSCode打开多个项目文件夹的解决方法
最近从sublime转vscode,自然而然就会把sublime的一些习惯带过来,其中有一点让人头疼的是: 当把一个文件夹拖进vscode里面的时候,会把原来的文件夹覆盖掉,这就意味着不能同时在vsc ...
- 用jieba库统计文本词频及云词图的生成
一.安装jieba库 :\>pip install jieba #或者 pip3 install jieba 二.jieba库解析 jieba库主要提供提供分词功能,可以辅助自定义分词词典. j ...
- 原生js实现table表格列宽自由缩放
<!DOCTYPE html> <html> <head> <meta charset="gbk"> <title>ta ...
- bug和注意事项
bug: 1.新增角色,在选择权限树的时候,如果不选择根目录下的第一个节点,保存后,权限树会打不开. 2.文档页面有两个大字段,即ueditor编辑器的时候,保存后回显会有问题 不过一个页面有两个大文 ...
- TZOJ 5271: 质因数的个数
求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N< ...
- 发现了一个比较有意思的url参数
今天登录阿里云发现需要二次验证了,手机号不是我的很麻烦,然后就看到有个手机app快捷登录的方式,点进去一看,链接地址是这样的http://qd.alibaba.com/onekey.htm?spm=0 ...
- Oracle debug
执行慢的使用使用debug环境变量,可以收集详细的日志 rootcrs.pl/roothas.pl执行慢 参考如下文档设置debug环境变量,重现问题并收集详细日志. How to turn on r ...
- G面经Prepare: Longest All One Substring
give a string, all 1 or 0, we can flip a 0 to 1, find the longest 1 substring after the flipping 这是一 ...
- MFC消息 OnCtlColor 改变控件颜色
OnCtlColor 有以下几个宏定义 #define CTLCOLOR_MSGBOX 0 #define CTLCOLOR_EDIT 1 #defin ...