Closed tangyiyang closed 8 years ago
key 就是那个 id. 如果你要 encode , 就必须编码成 sproto 要求的结构。
但是我的key是动态变化的,不可能在proto里一开始就把所有的key枚举出来。所以这是个无解的问题了?
你就没明白这个特性,不解释了。没理解就不要用这个了。
你可以用struct去做嘛 entry { key 0 : string value 1 : integer }
entrys 0 : *entry
@huanzai
应该是 entrys 0 : *entry(key)
:+1: 比数组更方便
我明白上面那个特性,看上半部分的代码(local data = {})就知道了。
local data = {
["0"] = 0,
["1001"] = 100001,
["1002"] = 100002,
["1003"] = 100003,
}
如果要利用这个特性,value的类型必须是table才可以。因为如果不是table,无法知道key的值从哪个地方来获取。
难道我需要枚举出所有的key么?我的意思是,如果一个类似数组的结构,但是key的类型并不是数,而是一个可以转换成数的字符串。如果可以的话,请告诉我怎么做?感谢。:)
通常用sproto的时候会去避免使用这样的结构,但是这个是旧代码,以前是用json作为数据交换格式的。我只是尽可能的想兼容旧的代码。
不支持.
@tangyiyang 诚恳地说,你想要的是一个支持map的数据交换格式, google protobuf 新一点的版本是支持的。但你说连key都不知道从哪来的话,就算支持map也满足不了你吧?是不是有什么误会? ;P
@tangyiyang 实在不行,你就换用一些 schema-free 的数据交换格式吧,比如json、msgpack之类,这样就可以闭着眼睛 encode, decode了,很爽。 ;P
感谢大家,问题解决。:)
data_2 这种结构应该怎么写proto呢?