协议缓冲资源中集合上的字段掩码



如果我想更新以下资源(协议缓冲区(中"f_units"集合内特定元素中的"金额"字段,FieldMask 更新金额字段的外观如何?字段掩码是否对集合的数组索引进行操作?

{
"f_sel": {
"f_units": [
{
"id": "1",
"amount": {
"coefficient": 1000,
"exponent": -2
}
},
{
"id": "2",
"amount": {
"coefficient": 2000,
"exponent": -2
}
}
]
}
}

会是"f_sel.f_units.0.amount"吗?如何使用字段掩码更新金额?

据我所知,没有办法用 FieldMask 中的索引替换重复字段的各个元素。

相反,您需要更新要更改f_units元素的数量字段,并将 FieldMask 设置为

"f_sel.f_units"

只需将增量发送到原始列表会稍微高效一些,但很难防止错误。 例如,如果在此期间修改了原型,并且重复字段的指定索引(假设有一种方法可以指定索引(不再在范围内,该怎么办?

顺便说一句,Google确实提出了MergeOptions的概念,该概念定义了合并时如何处理重复字段的语义。 目前,他们似乎打算让您完全替换重复字段或附加到目标字段的末尾。 这两种合并策略都避免了上述可能因指定无效索引而导致的错误。

最新更新