将JSON结构转换为原型结构



我的要求是将数据JSON共享给proto-buf。我有JSON数据。如何编写一个模式泛型来处理所有类型的值。

{
"data": [
{
"bool": true
},
{
"string": "abc"
},
{
"int": 22
},
{
"json_object" : {
"id": 1,
"email": "example@gmail.com"
}
},
{
"json_array" : [
{
"name":"xyz"
},
{
"age":2
}
]
}
]
}

如果,我使用的是Map<string, string>map。它只支持字符串值。如果我用的是Map<string, google.protobuf.Value>映射。JSONJSONArray不支持

如何在一个模式中处理所有类型?由于

如果你问如何使用协议缓冲区支持任意JSON。

因为协议缓冲区需要一个模式,使用协议缓冲区来表示通用的|任意|无模式类型的最简单方法是使用支持任意内容的类型封装任意类型,即使用协议缓冲区stringbytes类型。

注意stringbytes限制为2^32字节

如果您的JSON内容是可能类型的可管理(少数)子集,您可能需要考虑将每种可能性表示为不同的协议缓冲消息。

如果您的JSON内容有许多可能的类型,但可枚举(您可以命名它们),您可能需要考虑Any

最新更新