JSON映射
Proto3支持JSON中的规范编码,使得在系统之间共享数据更加容易。下表按类型对编码进行了描述。
如果JSON编码的数据中缺少一个值或者它的值为null,那么在解析到protocol buffer时,它将被解释为适当的默认值。如果某个字段在protocol buffer中有默认值,则在JSON编码的数据中默认会省略该字段以节省空间。具体实现可以提供选项在JSON编码的输出中使用默认值字段。
proto3 | JSON | JSON example | |
---|---|---|---|
message | object | {"fooBar": v, "g": null, …} | |
enum | string | "FOO_BAR" | |
map | object | {"k": v, …} | |
repeated V | array | [v, ...] | |
bool | true,false | true, false | |
string | string | "hello" | |
bytes | base64 string | "YWJjMTIzIT8kKiYoKSctPUB+" | |
int32, fixed32, uint32 | number | 1, -10, 0 | |
int64, fixed64, uint64 | string | "1", "-10" | |
float, double | number | 1.1, -10.0, 0, "NaN", "Infinity" | |
Any | object | {"@type": "url", "f": v, … } | |
Timestamp | string | "1972-01-01T10:00:20.021Z" | |
Duration | string | "1.000340012s", "1s" | |
Struct | object | {...} | |
Wrapper types | various types | 2, "2", "foo", true, "true", null, 0, … | |
FieldMask | string | "f.fooBar,h" | |
ListValue | array | [foo, bar, …] | |
Value | Value | ||
NullValue | null | ||
Empty | object | {} |