在“使用CEF的JSON解析功能”中介绍了使用CefParseJson方法,与之相应的另一个CefWriteJson方法,能够用来生成JSON串(或二进制),其函数原型例如以下:

// Generates a JSON string from the specified root |node| which should be a
// dictionary or list value. Returns an empty string on failure. This method
// requires exclusive access to |node| including any underlying data.
/*--cef()--*/
CefString CefWriteJSON(CefRefPtr<CefValue> node,
cef_json_writer_options_t options);

注意第一个參数是CefValue类型,在cef_values.h中定义,是CEF里的通用类型。

当我们要调用CefWriteJSON时必须传入此类型的数据,假如你的JSON数据通过CefListValue或CefDictionaryValue来表示,就须要将它们设置到一个CefValue实例中再传递给CefWriteJSON。

以下是使用CefWriteJSON的一个简单演示样例:

void testWriteJson()
{
CefRefPtr<CefDictionaryValue> pDict = CefDictionaryValue::Create();
pDict->SetInt("id", 123);
pDict->SetString("name", "ZhangSanFeng"); CefRefPtr<CefValue> pValue = CefValue::Create();
pValue->SetDictionary(pDict);
std::string jsonString = CefWriteJSON(pValue, JSON_WRITER_DEFAULT); OutputDebugStringA(jsonString.c_str());
}

相应生成的JSON串例如以下:

{
"id":123,
"name":"ZhangSanFeng"
}

JSON数据可能是我们基于CEF开发富client程序时,在JS和C++之间通信最方便的格式了。以上面的数据为例,传递到JS上下文中,就能够用obj.id、obj.name之类的形式来訪问。


就这样吧。

其它參考文章详见我的专栏:【CEF与PPAPI开发】。

CEF生成JSON数据的更多相关文章

  1. 生成JSON数据--fastjson(阿里)方法

    fastjson(阿里)方法生成JSON数据: 与Gson类似,创建相应类,再使用JSON.toJSONString()添加对象 要求:生成如下JSON数据 1.{"age":3, ...

  2. 生成JSON数据--Gson(谷歌)方法

    Gson生成JSON数据方法: 创建相应的类,然后创建对象,toJson()进去就可以了 要求:生成如下JSON数据 1.{"age":4,"name":&qu ...

  3. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  4. 无限级分类及生成json数据

    第一步,先去数据库查询类别数据,然后交给生成json数据的函数处理,代码如下: /*生成类别JSON数据*/ public function wirteJson(){ $dataInfo = \thi ...

  5. servlet生成json数据返回至Ajax

    一.JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标 ...

  6. ASP生成JSON数据

    原文地址为:ASP生成JSON数据 < %@LANGUAGE = " VBSCRIPT "  CODEPAGE = " 65001 " % >    ...

  7. C#生成JSON数据

    protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.ContentType = &quo ...

  8. c# 生成json数据包

    json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...

  9. 生成 JSON 数据

    //build an info object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsA ...

随机推荐

  1. 使用 Pinup,PinupManager 在 XNA 中创建贴图(十七)

    平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...

  2. Android 使用剪贴板传递简单数据及复杂数据的方法

    传递数据的场景在于不同页面之间跳转,需要携带数据:简单数据值指的是String, int等数据, 复杂数据指的是类 1.   使用剪贴板传递简单数据方法: 第一个页面里面放数据操作如下: Clipbo ...

  3. jira从windows迁移到linux

    说明:迁移的就是 jira安装路径/atlassian/jira/atlassian-jira/WEB-INF/classes/jira-application.properties文件中的jira_ ...

  4. POJ 3648 Wedding(2-SAT的模型运用+DFS | Tarjan)

    Wedding Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10427   Accepted: 3170   Specia ...

  5. hibernate的各个jar包的作用

    hibernate的各个jar包的作用 最基本的Hibernate3.3.2之 JAR包(必要): 包名 位置 用途 hibernate3.jar /hibernate 核心JAR包 antlr.ja ...

  6. js,add script async? loaded ok.

    function loadScript(url, callback){ var script = document.createElement_x("script") script ...

  7. 用正则表达式模仿Mustache插件的功能

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. 了解 Oracle Berkeley DB 可以为您的应用程序带来 NoSQL 优势的原因及方式。

    将 Oracle Berkeley DB 用作 NoSQL 数据存储 作者:Shashank Tiwari 2011 年 2 月发布 “NoSQL”是在开发人员.架构师甚至技术经理中新流行的一个词汇. ...

  9. sql语句中的[]中括号(转)

    下面有关sql语句中[]的信息适用于Sql Server.Access等多种数据库. 1.sql语句中加[]是为了防止歧义,避免与系统保留关键字冲突,使计算机能识别.sql语句中有些字段可能是关键字, ...

  10. [SaltStack] Minion-conf自动更新

    minion-conf配置文件自动更新, 加载 minion-conf是每个minion自身以来的配置, 为了方便我们在中心管控机上(Master)统一配置, 然后下发文件, 进而使得Minion能够 ...