【问题标题】:gRPC json data in camel case骆驼案例中的gRPC json数据
【发布时间】:2026-01-15 09:10:01
【问题描述】:

我收到了来自 gRPC 的 json 数据,它属于 Pascal 案例。我希望它是骆驼的。我正在使用 Angular 访问 gRPC 服务。即使我将结果序列化并将结果转换为驼峰式,角度输出始终是帕斯卡式。 以下是详细信息。

protobuf 消息

message EmployeeRecord {
   string record = 1;
}

gRPC 服务

var serializedResult = JsonConvert.SerializeObject(fields, new JsonSerializerSettings
{
   ContractResolver = new CamelCasePropertyNamesContractResolver()
});

var result = new Protos.EmployeeRecord() { record = serializedResult };

return result;

角码

public getEmployees() : void{
    this.response = "";
    const service = new EmployeeServiceClient(this.gRPCUrl, null);
    const request = new EmployeeRecord();
    request.setMesssage('');

    service.fields(request, null, (err, response: EmployeeRecord) => {
        if (err) {
          console.log(err);
        }
        else {
          this.response = response.toObject().record;
        }
    });
  }

this.response 中的结果始终以 Pascal 格式表示

【问题讨论】:

    标签: angular grpc


    【解决方案1】:

    您在服务器上序列化为 JSON。然后将 protobuf 消息的 string 字段中的 JSON 发送到 angular。

    似乎非常字符串在传输过程中不太可能发生变化。

    很可能您的服务器没有生成您期望的数据(检查日志记录)或者您在客户端中混淆了某些内容。

    【讨论】:

    • 您好,感谢您的回复。但正如您在上面的代码中看到的那样,我已经这样做了。我有 2 个测试应用程序,一个是控制台应用程序,另一个是 Angular 应用程序。在控制台应用程序中它工作正常,但是在角盎司中我收到了它变成帕斯卡大小写的数据
    【解决方案2】:

    我正在使用 grpcui 工具并注意到一个类似的问题:JSON 原始请求使用 myExampleFieldName 但正确的名称是 my_example_field_name

    也许 JSON 不允许下划线?

    【讨论】: