首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >,.proto文件查询

,.proto文件查询
EN

Stack Overflow用户
提问于 2017-12-06 13:00:27
回答 1查看 444关注 0票数 1

我需要为下面的.proto案例类创建CRMData文件。我对以下数据类型有混淆,即嵌套映射和用户定义类(ShipToGroup)

代码语言:javascript
复制
case class CRMData(
       var customerShipToGroups : Map[String, Map[UUID, ShipToGroup]],
       var shipToGroups : Map[UUID, ShipToGroup],
       var shipToGroupLastUsed : UUID,
       var defaultShipToGroup : UUID
)

case class ShipToGroup(
    var customerUUID : String,
    var shipToGroupUUID : UUID,
    var name : String,
    var address : String,
    var companyName : String,
    var phoneNumber : Long,
    var city : String,
    var state : String,
    var zip : Int,
    var country : String,
    var landmark : String,
    var addressType : Int,
    var emailId : String,
    var addedAsBillingAddress : Boolean,
    var usedAsBillingAddress: Boolean,
    var isDefault : Boolean,
    var address2 : String)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-06 14:09:25

您将遇到的最大问题是,guids (我假设这就是UUID )在.proto中不是一个基本类型,而.proto中的map<,>只适用于字符串和整数类型。我将假设您很乐意使用string作为最接近的匹配(并且因为它在地图中工作)。

您不能做嵌套映射,但是您可以有一个映射,其中每个元素都有一个映射。

将这两个注意事项结合起来,您就可以执行如下操作:

代码语言:javascript
复制
syntax = "proto3";
message CRMData {
    map<string, NeedAGoodName> customerShipToGroups = 1;
    map<string, ShipToGroup> shipToGroups = 2;
    string shipToGroupLastUsed = 3;
    string defaultShipToGroup = 4;
}
message NeedAGoodName {
    map<string, ShipToGroup> items = 1;
}
message ShipToGroup {
    string customerUUID = 1;
    string shipToGroupUUID = 2;
    // ...
    string address2 = 17;
}

注意:我可能一直在使用string,但这仅仅是因为特定的示例;.proto 支持更多的原语。 -我希望在您的最终版本中看到一些booluint32。也许是一些fixed64的电话号码,虽然字符串可能更常见。您还可能需要一个用于enumaddressType

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47674930

复制
相关文章

相似问题

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