首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使protobuf.js输出枚举字符串而不是整数

如何使protobuf.js输出枚举字符串而不是整数
EN

Stack Overflow用户
提问于 2016-06-07 19:02:33
回答 1查看 5.7K关注 0票数 21

我使用的是最新的protobuf.js和Node.js 4.4.5。

目前,我很难让protobuf.js输出枚举的字符串定义,而不是整数。我试过几个建议,但都没有用:

我想这是因为第一个protobuf.js中API的变化。对于第二种方法,我可以部分地使用建议的解决方案,但是如果消息嵌套在其他消息中,构建器似乎会返回到使用整数值,尽管字符串值已经显式设置。

理想情况下,我希望重写用于生成枚举值的函数,但很难用调试器找到正确的值。或者,对于深嵌套对象,是否有更好的方法来实现?

EN

回答 1

Stack Overflow用户

发布于 2021-02-16 21:58:25

protoc生成的JS代码只有一个方向的映射。

代码语言:javascript
复制
 proto.foo.Bar.Myenum = {
  HEY: 0,
  HO: 1
};

这是这里的基本原理,但您必须在自己的JS代码中进行反向查找。对此有很多简单的解决方案。我用了https://stackoverflow.com/a/59360329/449347的那个。

通用逆映射函数.

代码语言:javascript
复制
 export function getKey(map, val) {
  return Object.keys(map).find(key => map[key] === val);
}

UT .

代码语言:javascript
复制
import { Bar } from "js/proto/bar_pb";

expect(getKey(proto.foo.Bar.Myenum, 0)).toEqual("HEY");
expect(getKey(proto.foo.Bar.Myenum, 1)).toEqual("HO");
expect(getKey(proto.foo.Bar.Myenum, 99)).toBeUndefined();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37687316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档