使用 protobuf 编码记录
encoding a record using protobuff
我正在寻找使用 erlang 的 protobuff 在 erlang 中编码记录数据结构。我还没有找到这样做的功能。
rd(person, {name = "", phone = [], address}).
A = #person{phone=[0,8,2,3,4,3,1,2], name="Robert"}.
protobuffs:encode(1, A, bytes).
** exception error: bad argument
in function protobuffs:encode_internal/3
called as protobuffs:encode_internal(1,
#person{
name = "Robert",
phone = [0,8,2,3,4,3,1,2],
address = undefined},
bytes)
How can I encode a record using protobuff?
这是我用来编码的模块,https://github.com/basho/erlang_protobuffs
谢谢
您不能对您刚刚定义的任意记录进行编码,这根本不是 Protocol Buffers 在任何语言中的工作方式。
您需要:
在 .proto
文件中定义消息类型(阅读 Protocol Buffers 文档了解语法、支持的类型等)。
从中生成所需语言的代码。在这种情况下,使用 protobuffs_compile:scan_file(<path-to-your-proto-file>).
,如 README 中所示。
使用生成的代码。它将包括 person
记录和 encode_person
函数。
我正在寻找使用 erlang 的 protobuff 在 erlang 中编码记录数据结构。我还没有找到这样做的功能。
rd(person, {name = "", phone = [], address}).
A = #person{phone=[0,8,2,3,4,3,1,2], name="Robert"}.
protobuffs:encode(1, A, bytes).
** exception error: bad argument
in function protobuffs:encode_internal/3
called as protobuffs:encode_internal(1,
#person{
name = "Robert",
phone = [0,8,2,3,4,3,1,2],
address = undefined},
bytes)
How can I encode a record using protobuff?
这是我用来编码的模块,https://github.com/basho/erlang_protobuffs
谢谢
您不能对您刚刚定义的任意记录进行编码,这根本不是 Protocol Buffers 在任何语言中的工作方式。
您需要:
在
.proto
文件中定义消息类型(阅读 Protocol Buffers 文档了解语法、支持的类型等)。从中生成所需语言的代码。在这种情况下,使用
protobuffs_compile:scan_file(<path-to-your-proto-file>).
,如 README 中所示。使用生成的代码。它将包括
person
记录和encode_person
函数。