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 | {} |