如何在构建消息之前在 protobuf 中设置重复字段?

     2023-02-16     168

关键词:

【中文标题】如何在构建消息之前在 protobuf 中设置重复字段?【英文标题】:How to set repeated fields in protobuf before building the message? 【发布时间】:2015-03-20 15:28:47 【问题描述】:

假设我有一个包含重复字段的消息:

Message Foo 
    repeated Bar bar = 1;

现在我想将nBar 对象插入到字段栏中,每个对象都是在循环中创建的。

for (i=0; i < n; i++)
    //Add Bar into foo

//Build foo after loop

这可能吗,还是在构建 foo 对象之前我需要所有 n bar 字段?

【问题讨论】:

【参考方案1】:

当您使用 protoc 命令生成 java 对象时,它将创建一个 Foo 对象,该对象将具有自己的构建器方法。

你最终会做这样的事情

//Creates the builder object 
Builder builder = Package.Foo.newBuilder();
//populate the repeated field.
builder.addAll(new ArrayList<Bar>());
//This should build out a Foo object
builder.build(); 

要添加单个对象,您可以执行以下操作。

    Bar bar = new Bar();
    builder.addBar(bar);
    builder.build();

根据您要求的用例进行编辑。

【讨论】:

是的,这就是我现在所做的,但我希望能找到可以一个一个插入内部对象的东西。 编辑了消息,应该有一个选项可以一一传入各个对象。 单线如何做到这一点?【参考方案2】:
List<Bar> barList= new Arraylist();
barList.add(new Bar());

然后在 Foo 中设置 Bar 的列表

Foo foo =  Foo.newBuilder()
        .addAllBar(barList)
        .build;

Bar 只能设置一个值

Foo foo =  Foo.newBuilder()
        .addBar(new Bar())
        .build;

【讨论】:

如何在protobuf中设置重复字段至少重复一次

】如何在protobuf中设置重复字段至少重复一次【英文标题】:Howtosetrepeatedfieldtorepeateatleastonetimeinprotobuf【发布时间】:2013-10-2021:17:17【问题描述】:我已经开始使用谷歌的protobuf并且有重复的字段类型:repeated:thisfieldcanberepeatedanyn... 查看详情

如何在spring集成消息中设置JMS Header

】如何在spring集成消息中设置JMSHeader【英文标题】:HowtosetJMSHeaderinspringintegrationmessage【发布时间】:2022-01-1509:44:55【问题描述】:我正在尝试通过在推送到IBMMQ之前在其标头中设置来在Spring集成消息中设置jms相关ID,但在从队列... 查看详情

在 Html Textarea 中设置 maxlength [重复]

...area[duplicate]【发布时间】:2011-05-2611:13:39【问题描述】:如何在textarea中设置maxlength?为什么maxlength在textarea中不能正常工作?【问题讨论】:【参考方案1】:在HTML5之前,我们有一个简单但可行的方法:首先在textarea元素中设置... 查看详情

如何在 ASP.NET 中设置自动实现属性的默认值 [重复]

】如何在ASP.NET中设置自动实现属性的默认值[重复]【英文标题】:HowtosetdefaultvalueforAuto-ImplementedPropertiesinASP.NET[duplicate]【发布时间】:2011-11-2809:38:02【问题描述】:我开始知道C#3.0带有自动实现属性的新功能,我喜欢它,因为我... 查看详情

如何在用户通知中设置重复频率[重复]

】如何在用户通知中设置重复频率[重复]【英文标题】:HowtosetrepeatfrequencyinUserNotification[duplicate]【发布时间】:2016-06-2306:01:18【问题描述】:直到iOS9我们这样写localnotificationsUILocalNotification*localNotification=[[UILocalNotificationalloc]init];... 查看详情

在存储过程中设置 RAISERROR 的编号和消息

】在存储过程中设置RAISERROR的编号和消息【英文标题】:SetnumberandmessageforRAISERRORinstoredprocedure【发布时间】:2012-11-0707:04:02【问题描述】:我写了一个保存卡的存储过程。我想当Barcode_Num重复时,不允许添加和显示消息(我知道... 查看详情

如何在 Xcode 中设置 Flutter 构建选项

】如何在Xcode中设置Flutter构建选项【英文标题】:HowdoyousetFlutterbuildoptionsinXcode【发布时间】:2020-12-2111:26:39【问题描述】:我需要在XcodeGUI中设置以下颤振构建选项:--no-tree-shake-icons如果没有这个,我在构建用于分发的存档时会... 查看详情

如何在 RSAParameters 中设置公钥 [重复]

】如何在RSAParameters中设置公钥[重复]【英文标题】:HowtosetpublickeyinRSAParameters[duplicate]【发布时间】:2017-07-0607:56:17【问题描述】:我有用Base64编码的RSA公钥。解码后我可以得到RSA公钥:-----BEGINPUBLICKEY-----XXXXXXXXXXXXXXXXXXXXXXX-----结... 查看详情

如何在proto3中设置重复元素的重复

】如何在proto3中设置重复元素的重复【英文标题】:Howtosetrepeatedofrepeatedelementsinproto3【发布时间】:2020-04-2820:48:13【问题描述】:我的.proto中有这两个定义://alltheshardsonaservermessageConfigEntryrepeatedShardshards=2;stringserver=3;//informationon... 查看详情

如何在 Kafka 中设置消息的大小?

】如何在Kafka中设置消息的大小?【英文标题】:HowdoIsetthesizeofmessagesinKafka?【发布时间】:2016-06-1200:39:15【问题描述】:我目前使用的是Kafka0.9.0.1。根据我发现的一些来源,设置消息大小的方法是修改server.properties中的以下键值... 查看详情

如何在 Eclipse 中设置提交消息模板

】如何在Eclipse中设置提交消息模板【英文标题】:HowtosetcommitmessagetemplateinEclipse【发布时间】:2019-08-2004:48:32【问题描述】:阅读本文https://medium.freecodecamp.org/level-you-up-to-awesome-commit-messages-a85558cb90e8我想将我的提交消息模板设置... 查看详情

如何在 Azure devops 中设置构建管道 [关闭]

】如何在Azuredevops中设置构建管道[关闭]【英文标题】:HowtosetupbuildpipelineinAzuredevops[closed]【发布时间】:2019-07-3119:20:33【问题描述】:我正在尝试在Azure开发操作中设置我的构建和发布管道,以将我的webforms应用程序发布到我公... 查看详情

如何在postgres中设置日期变量[重复]

】如何在postgres中设置日期变量[重复]【英文标题】:Howtosetadate-variableinpostgres[duplicate]【发布时间】:2021-04-2614:17:08【问题描述】:我有以下问题:在脚本(PL/pgSQL)中,我使用以下行3次。and$myfieldbetweento_date(\'01.07.2019\',\'DD.MM.YYYY\')... 查看详情

如何在 QWebEngineView 中设置背景图像 [重复]

】如何在QWebEngineView中设置背景图像[重复]【英文标题】:HowtosetabackgroundimageinQWebEngineView[duplicate]【发布时间】:2019-10-2109:54:05【问题描述】:我正在使用来自QtWebEngineWidgets的QWebEngineView来显示图像,并且我想将其作为背景图像。... 查看详情

如何在 Sql Server 2008 中设置唯一约束 [重复]

】如何在SqlServer2008中设置唯一约束[重复]【英文标题】:HowtosetuniqueconstraintinSqlServer2008[duplicate]【发布时间】:2012-12-2018:43:09【问题描述】:可能重复:SQLServer2005HowCreateaUniqueConstraint?AdduniqueconstraintinSQLServer2008GUI?我在SqlServer2008中... 查看详情

如何在 UNNotificationRequest 中设置重复间隔和触发日期

】如何在UNNotificationRequest中设置重复间隔和触发日期【英文标题】:HowtoSetrepeatintervalaswellasfiredateinUNNotificationRequest【发布时间】:2017-11-0611:03:33【问题描述】:以前我在我的应用程序中使用UILocalNotification进行提醒。但如上所述A... 查看详情

Scikit learn 错误消息“精度和 F 分数定义不明确,在标签中设置为 0.0”[重复]

】Scikitlearn错误消息“精度和F分数定义不明确,在标签中设置为0.0”[重复]【英文标题】:ScikitlearnErrorMessage\'PrecisionandF-scoreareill-definedandbeingsetto0.0inlabels\'[duplicate]【发布时间】:2016-05-1512:03:10【问题描述】:我正在研究二进制... 查看详情

如何根据索引在数据框中设置值[重复]

】如何根据索引在数据框中设置值[重复]【英文标题】:Howtosetvaluesinadataframebasedonindex[duplicate]【发布时间】:2019-01-1512:04:36【问题描述】:这是我的数据customer_idfeature_1feature_2feature_30178736312797166228276693343325343634254我想一一标记数... 查看详情