Va5*_*li5 3 protocol-buffers node.js typescript grpc grpc-node
我有一个 TypeScript 服务器尝试使用 Struct 读取 JSON 对象,但它似乎仅部分适用于包含“fields”键的对象,然后该对象需要一个对象作为值。尽管如此,Struct 应该适用于任何 JSON 对象。
使用 BloomRPC 我正在尝试以下消息:
{
"payload": {
"fields": {
"Hello": {
"whatever": 0
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
服务器读取:
{ fields: { Hello: {} } }
Run Code Online (Sandbox Code Playgroud)
如果我发送:
{
"payload": {
"anotherfield": {
"HelloWorld": {
"whatever": 0
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在服务器上得到一个空对象。
简化的 protobuf 文件如下所示:
syntax = "proto3";
import "google/protobuf/struct.proto";
// The service definition.
service TestTicketService {
rpc UpdateTicket (UpdateTicketRequest) returns (UpdateTicketResponse);
}
// The request message containing the required ticket information.
message UpdateTicketRequest {
string ticketId = 1;
google.protobuf.Struct payload = 2;
}
// The response message containing any potential error message
message UpdateTicketResponse {
string error = 1;
}
Run Code Online (Sandbox Code Playgroud)
知道为什么 google/protobuf/struct.proto 不能按预期工作吗?
真正让我困惑的是我试图传递普通的 JSON 对象并期望读取它们。重点是,从客户端来看,JSON 对象需要以非常特定的方式进行编码。
例如:
"payload": {
"fields": {
"name": {
"stringValue": "joe"
},
"age": {
"numberValue": 28
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过查看此处的 Struct proto 文件来确定消息的格式:https: //googleapis.dev/nodejs/asset/latest/v1_doc_google_protobuf_doc_struct.js.html
| 归档时间: |
|
| 查看次数: |
7112 次 |
| 最近记录: |