## gRPC-JSON 轉碼器
gRPC-JSON 轉碼器[配置參考](../../../Configurationreference/HTTPfilters/gRPCJSONtranscoderfilter.md)。
### filter.http.GrpcJsonTranscoder
[filter.http.GrpcJsonTranscoder proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/filter/http/transcoder.proto#L9)
```
{
"proto_descriptor": "...",
"services": [],
"print_options": "{...}"
}
```
- **proto_descriptor**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), REQUIRED) 為gRPC服務提供二進制`protobuf`描述符集合。描述符集合必須包含服務中使用的所有類型。確保為`protoc`,并使用`--include_import`選項。
要為gRPC服務生成一個`protobuf`描述符集,在運行`protoc`之前,還需要從Github中克隆google apis庫,因為在`include`路徑中需要`annotations.proto`。
```
git clone https://github.com/googleapis/googleapis
GOOGLEAPIS_DIR=<your-local-googleapis-folder>
```
然后運行protoc從`bookstore.proto`生成描述符:
```
protoc -I$(GOOGLEAPIS_DIR) -I. --include_imports --include_source_info \
--descriptor_set_out=proto.pb test/proto/bookstore.proto
```
如果您有許多原始源文件,則可以使用通過這個命令來傳遞所有文件。
- **services**<br />
([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), REQUIRED) 提供將要轉換的服務名的字符串列表。如果服務名在`proto_descriptor`中不存在,Envoy則啟動失敗。`proto_descriptor`可能包含比這里指定的服務名稱更多的服務,但是它們不會被轉換。
- **print_options**<br />
([filter.http.GrpcJsonTranscoder.PrintOptions](#filterhttpgrpcjsontranscoderprintoptions)) 響應JSON的控制選項。這些選項直接傳遞給[JsonPrintOptions](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonPrintOptions)。
### filter.http.GrpcJsonTranscoder.PrintOptions
[filter.http.GrpcJsonTranscoder.PrintOptions proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/filter/http/transcoder.proto#L39)
```
{
"add_whitespace": "...",
"always_print_primitive_fields": "...",
"always_print_enums_as_ints": "...",
"preserve_proto_field_names": "..."
}
```
- **add_whitespace**<br />
([bool](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 是否添加空格,換行符和縮進以使輸出的JSON易于閱讀。默認為false。
- **always_print_primitive_fields**<br />
([bool](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 是否始終打印原始字段。默認情況下,具有默認值的原始字段將在JSON輸出中被省略。例如,設置為0的int32字段將被省略。將此標志設置為true,將覆蓋默認行為并打印原始字段,而不考慮其值。默認為false。
- **always_print_enums_as_ints**<br />
([bool](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 是否始終打印枚舉作為整數。默認情況下,它們呈現為字符串。默認為false。
- **preserve_proto_field_names**<br />
([bool](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 是否保留原始字段名稱。默認情況下,`protobuf`將使用`json_name`選項生成JSON字段名稱,或者按照下面的順序生成較低的駱駝風格的大小寫。設置此標志將保留原始字段名稱。默認為false。
## 返回
- [上一級](../HTTPfilters.md)
- [首頁目錄](../../../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?