FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 4204|回复: 11

CEF3专辑-进阶篇-07-JSON的操作

 火.. [复制链接]

签到天数: 32 天

[LV.5]常住居民I

10

主题

34

回帖

554

积分

中级会员LV1

太阳月亮月亮星星

积分
554
发表于 2025-3-11 08:35:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 KenTien 于 2025-5-5 19:43 编辑

JSON的操作
Cef提供了JSON解析功能,在cef_parser.h文件内有三个JSON相关的方法:
CefParseJSON
CefParseJSONAndReturnError
CefWriteJSON

CEF解析JSON
[C++] 查看源码 复制代码
void CMainFrameWnd::TestParseJson()[/size]
[size=3]{[/size]
[size=3]    std::wstring wstrJson = _T("{");[/size]
[size=3]    wstrJson += _T("\"uid\" : \"chechenluoyang@163.com\",");[/size]
[size=3]    wstrJson += _T("\"fileName\" : \"梅西.txt\",");[/size]
[size=3]    wstrJson += _T("\"time\" : \"2017.07.29 10:55:22\",");[/size]
[size=3]    wstrJson += _T("\"type\" : \"Libcurl HTTP POST JSON \",");[/size]
[size=3]    wstrJson += _T("\"authList\" : \"test\"");[/size]
[size=3]    wstrJson += _T("}");[/size]
[/color][/color][/font][/color]
[color=#000][align=left][font=微软雅黑][size=3]/*第一个參数是带解析的json串,类型是CefString。实际使用时传递char*或std::string都能够。CefString能够自己主动依据它们构造。[/size][/font][/align][align=left][font=微软雅黑][size=3] [/size][/font][/align][align=left][font=微软雅黑][size=3]第二个是枚举型的选项(定义在cef_types.h内)。有JSON_PARSER_RFC和JSON_PARSER_ALLOW_TRAILING_COMMAS两个值。后面这个枚举值的意思是同意JSON串最后有一个逗号(以逗号结尾的JSON字符串可能会被标准解析器觉得不合规)。[/size][/font][/align][align=left][font=微软雅黑][size=3] [/size][/font][/align][align=left][font=微软雅黑][size=3]返回值是CefValue。CefValue是一个通用类型,定义在cef_values.h中,能够代表布尔、整型、双精度浮点数、字符串、二进制、字典、列表这几种类型(在cef_types.h中定义了枚举类型cef_value_type_t)。[/size][/font][/align][align=left][font=微软雅黑][size=3] [/size][/font][/align][align=left][font=微软雅黑][size=3]CefValue的GetType()方法能够返回实际的数据类型。然后还有GetBool、GetString、GetInt、GetDictionary等用来返回特定类型的数据。*/[/size][/font][/align][/color]
[font=微软雅黑][color=#000][color=rgb(51, 51, 51)][color=#000][size=3]    CefRefPtr<CefValue> jsonObject = CefParseJSON(wstrJson, JSON_PARSER_ALLOW_TRAILING_COMMAS);[/size]

[size=3]    if (jsonObject->IsValid())[/size]
[size=3]    {[/size]
[size=3]        CefRefPtr<CefDictionaryValue> dict = jsonObject->GetDictionary();[/size]
[size=3]        CefString strUid = dict->GetString("uid");//得到chechenluoyang@163.com[/size]
[size=3]        CefString strFilename = dict->GetString("fileName");//得到梅西.txt[/size]
[size=3]    }[/size]
[size=3]}[/size]
[size=3]


注:因为我的工程属性设置的是Unicode编码,所以在用字符串拼接的时候用wstring来存储,不然中文会乱码。

构建JSON
[C++] 查看源码 复制代码
void CMainFrameWnd::TestWriteJson()[/size]
[size=3]{[/size]
[size=3]    CefRefPtr<CefDictionaryValue> pDict = CefDictionaryValue::Create();[/size]

[size=3]    pDict->SetInt("id", 9527);[/size]
[size=3]    pDict->SetString("name", _T("梅西"));[/size]

[size=3]    CefRefPtr<CefValue> pValue = CefValue::Create();[/size]

[size=3]    pValue->SetDictionary(pDict);[/size]
[size=3]    std::wstring strJson = CefWriteJSON(pValue, JSON_WRITER_DEFAULT);[/size]
[size=3]}[/size]
[size=3]

生成的JSON串:
[AppleScript] 查看源码 复制代码
{[/size]
[size=3]   "id":9527,[/size]
[size=3]    "name":"梅西"[/size]
[size=3]}[/size]
[size=3]



















签到天数: 4 天

[LV.2]偶尔看看I

0

主题

10

回帖

47

积分

新手上路LV5

月亮星星星星

积分
47
发表于 8 小时前 | 显示全部楼层

签到天数: 5 天

[LV.2]偶尔看看I

0

主题

19

回帖

79

积分

初级会员LV1

月亮月亮

积分
79
发表于 昨天 08:36 | 显示全部楼层
路过,看看撒情况

签到天数: 3 天

[LV.2]偶尔看看I

0

主题

13

回帖

43

积分

新手上路LV5

月亮星星星星

积分
43
发表于 昨天 02:00 | 显示全部楼层
必须支持一下

签到天数: 9 天

[LV.3]偶尔看看II

0

主题

19

回帖

98

积分

初级会员LV1

月亮月亮

积分
98
发表于 前天 22:17 | 显示全部楼层

签到天数: 235 天

[LV.7]常住居民III

0

主题

247

回帖

2441

积分

高级会员LV1

皇冠月亮星星

积分
2441
发表于 4 天前 | 显示全部楼层

签到天数: 408 天

[LV.9]以坛为家II

1

主题

426

回帖

4100

积分

高级会员LV2

皇冠月亮月亮星星星星

积分
4100
发表于 6 天前 | 显示全部楼层

签到天数: 5 天

[LV.2]偶尔看看I

0

主题

15

回帖

67

积分

初级会员LV1

月亮月亮

积分
67
发表于 2026-10-24 11:52:24 | 显示全部楼层

签到天数: 11 天

[LV.3]偶尔看看II

0

主题

21

回帖

130

积分

初级会员LV2

月亮月亮星星星星

积分
130
发表于 2026-10-18 11:40:57 | 显示全部楼层

签到天数: 410 天

[LV.9]以坛为家II

0

主题

419

回帖

3999

积分

高级会员LV2

皇冠月亮月亮星星星星

积分
3999
发表于 2026-10-17 13:23:02 | 显示全部楼层
看看怎么个事
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-11-1 15:38 , Processed in 0.025203 second(s), 11 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表