2017-12-06 7 views
1

Ich muss .proto Datei für folgende CRMData Fallklasse erstellen. das ich habe, eine Verwechslung mit den folgenden Datentypen, dh Verschachtelte Karten und benutzerdefinierte Klasse (ShipToGroup)Google Protobuf, .proto Dateiabfrage

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) 

Antwort

0

Das größte Problem, das Sie haben werden, ist, dass guids (Ich gehe davon aus, dass ist das, was UUID ist) nicht Ein primitiver Typ in .proto und map<,> in .proto funktioniert nur mit String- und Integertypen. Ich nehme an, Sie sind glücklich, string als die nächste Übereinstimmung zu verwenden (und weil es in Karten funktioniert).

Sie können nicht tun verschachtelte Karten, aber Sie können eine Karte, wo jedes Element etwas ist, das eine Karte hat.

diese beiden Einsprüche Kombinieren, und Sie können wie etwas tun:

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; 
} 

Hinweis: es könnte aussehen wie ich string durchgängig bei allen bin, aber das ist nur wegen des speziellen Beispiels; .proto supports more primitives than that - Ich würde erwarten, einige bool und uint32 in Ihrer endgültigen Version zu sehen. Vielleicht einige fixed64 für die Telefonnummer, obwohl eine Zeichenfolge dafür häufiger sein könnte. Möglicherweise möchten Sie auch eine für die addressType.

+0

Hallo Danke, das hat für mich funktioniert, jetzt bin ich stecken geblieben, wie CRMData, die wir oben verwenden, zu serialisieren. –

Verwandte Themen