我的要求是将数据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>
映射。JSON
和JSONArray
不支持
如何在一个模式中处理所有类型?由于
如果你问如何使用协议缓冲区支持任意JSON。
因为协议缓冲区需要一个模式,使用协议缓冲区来表示通用的|任意|无模式类型的最简单方法是使用支持任意内容的类型封装任意类型,即使用协议缓冲区string
或bytes
类型。
注意
string
和bytes
限制为2^32字节
如果您的JSON内容是可能类型的可管理(少数)子集,您可能需要考虑将每种可能性表示为不同的协议缓冲消息。
如果您的JSON内容有许多可能的类型,但可枚举(您可以命名它们),您可能需要考虑Any
。