例如,我有一个这样的原型(prototype):
message ProtoType
{
string field1 = 1;
strin field2 = 2;
}
我有一个从该原型(prototype)的较新版本反序列化的 json:
{
"field1": "111",
"field2": "222",
"testField": "test"
}
我用它来从 json 序列化 protobuf:
JsonParser.Default.Parse<ProtoType>(protojson);
但是,如果我的 json 有一些 proto 中不存在的字段(如下面的 testField
),它将抛出异常:
InvalidProtocolBufferException: Unknown field: testField
我想知道是否有办法获取可以自动忽略未知字段的 ProtoType 实例。
非常感谢!
最佳答案
您将需要使用类JsonParser.Setting
并使用函数WithIgnoreUnknownFields
。所以你会得到这样的东西:
var settings = JsonParser.Settings.Default.WithIgnoreUnknownFields(true);
var t = new JsonParser(settings).Parse<Test.ProtoType>(protojson);
此外,文档似乎没有涵盖这一点。我建议您检查JsonParser source code并搜索 Settings
类以获取您可以使用的所有功能。
编辑
为了完整起见,有一个 copy of the C# documentation由 Google 云团队管理,并且此版本是最新的。
关于c# - 如何从 json 序列化 protobuf,并自动忽略 C# 中的未知字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75318533/