将JSON对象转换为protobuf IStruct

3
我正在使用Dialogflow API for Nodejs
这个API显然是由Google通过协议缓冲实现的,但它呈现了一个简单的基于JavaScript / JSON的接口,我已经成功地用它进行了简单的查询。
为了请求Dialogflow向我发送特定平台的响应数据, 我显然需要 将一个简单的JSON对象编码为protobuf格式。链接的源代码提供了一个示例,使用了“structjson util”,可以用来执行所需的转换:
const structjson = require('./structjson.js');

const request = {
    /* other properties omitted */
    queryParams: {
        payload: structjson.jsonToStructProto({source: 'ACTIONS_ON_GOOGLE'})
    },
};

很遗憾,提供的structjson工具链接已失效,并且我找不到其他相关参考。

我只需要像上面的例子一样对一个简单的JSON对象进行编码。有没有一个简单的实用程序(无论是运行时还是命令行),可以使用它来完成这项任务,而无需使用protobuf工具链进行大手术?


1
在历史记录中找到了该文件 https://github.com/googleapis/nodejs-dialogflow/blob/d907f3af57438c3e88c274b100eab520b5b51062/samples/structjson.js - karthick
谢谢@karthick,非常有帮助。我还发现示例已更新为使用新的库进行转换;我会跟进一个答案来表明这一点。 - Myk Willis
1个回答

10

看起来Google Dialogflow的示例已经更新,使用pb-util包进行JSON到protobuf转换。该包提供了一种方便地将JSON编码为protobuf的方法,因此原问题中的示例变得非常简单:

const {struct} = require('pb-util');

const request = {
    /* other properties omitted */
    queryParams: {
        payload: struct.encode({source: 'ACTIONS_ON_GOOGLE'})
    },
};

感谢@karthick在Dialogflow样本库中找到原始structjson文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接