在protobuff中代表List最好的是什么?

时间:2018-01-11 22:56:56

标签: java protocol-buffers

我将基于XML的服务转换为基于Protobuff的服务。我陷入了无法决定如何在proto消息中表示List的问题。例如,我有像

这样的消息
message Person{
 string name=1;
 repeated Address address =2;
}

当我从上面的消息中生成xml使用protobuff-java-format时,我得到了

<Person>
    <name>Nathan Drake</name>
    <address>1234L, XXX, YY - 1234</address>
    <address>7896B, XXX, YY - 1234</address>
</Person>

但我想要

<Person>
    <name>Nathan Drake</name>
    <address-list>
     <address>1234L, XXX, YY - 1234</address>
     <address>7896B, XXX, YY - 1234</address>
    </address-list>
</Person>

代码在Person消息中使用重复字段正常工作,但将其包装在另一个List消息中是不错的做法?

message Person{
 string name=1;
 AddreeList addressList=2
}

message AddressList{
 repeated Address address =1;
}

1 个答案:

答案 0 :(得分:0)

这样做没有必要或有利,除非你的列表本身可以拥有它自己的属性。由于您需要<address-list>,这并非不可能,因此:如果您愿意,可以随意添加一个额外的图层。请注意,它不是必要,除非您以后需要存储:

<address-list someExtraInfo="abc">

可能对应于:

message AddressList{
   optional someExtraInfo string = 2;
   repeated Address address = 1;
}