js protobuf 实例对象在JSON转换时遇到的问题
程序员文章站
2023-12-30 19:00:22
...
一、踩坑情况:
在使用 JSON 转换 protobuf 生成的对象时,获取到的字符串与原数据不符。具体体现在,枚举类型的属性,在生成的对象中,值为 数字 ,而使用了 JSON.stringify 之后,得到的数据中,键名对应的不是数字,而是定义枚举类型时的字符串。
(具体的原因是由于 protobuf 生成的实例对象,重写了 toJSON 方法,导致 JSON 转换时,出现了预料之外的结果)
二、解决情况:
import { types } from '../protobuf/types';
// 初始化实例
const tempInstance = new types.Temp({ /*...*/ });
// 转换成普通对象
const tempObject = types.Temp.toObject( tempInstance );
// JSON 转换成字符串
const tempStringify = JSON.stringify( tempObject );