我有一个 .proto,其中有一条名为 Event 的消息。
message Event{
string id=1;
string param=2;
}
Event的param字段是biz层定义的模型,不同的biz有不同的模型,例如:
data class Cart(val size:Int, val int price:Int)
data class Goods(val id:String, val name:String)
上面是两个biz Model,为了用Event包装它们,我将模型转换成json字符串,如下所示:
val cartString = Cart(1,2).toJsonString()
val goodsString = Goods("a1","apple").toJsonString()
val cartEvent = Event {
id = "a"
param = cartString
}
val goodsEvent = Event {
id = "b"
param = goodsString
}
不同商业模式的数量可能超过200+。
这是一个好方法吗?
或者我应该使用 Any 并且会收到 200 多条商务消息吗?
或者地图是更好的方式?喜欢:
message Event{
string id=1;
map<string,string> param=3;
}
答案将取决于您使用 protobuf 想要实现的目标。
此列表按增加实施力度的顺序排列。
它也会影响对方如何处理数据。如果您已经拥有事件的底层模型以及与 JSON 之间的转换,并且该模型可用于所有涉及的程序,则没有必要转换为 protobuf 并返回。但如果对方没有这样的模型可用,您需要指定一个模式 - 无论是在 JSON 中还是在 protobuf 中。