Go에서 빈 JSON 태그를 생략하지 않고 Proto Buff 생성
JSON 프록시와 함께 gRPC를 사용하면 생성된 구조체에 생략 태그가 자동으로 추가됩니다. JSON 페이로드에 기본값이 포함되어 있지 않기 때문에 메시지를 마샬링할 때 문제가 발생할 수 있습니다.
이 문제를 해결하려면 ServeMux에 다음 옵션을 추가하는 것을 고려하세요.
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
이렇게 하면 기본값은 생성된 JSON에 항상 존재합니다.
또는 다음을 사용할 수 있습니다. google.golang.org/protobuf/encoding/protojson 패키지를 사용하여 프로토콜 버퍼 메시지를 마샬링합니다. 이 패키지는 인코딩 프로세스에 대한 더 많은 제어 기능을 제공하며 기본값을 내보내도록 지정할 수 있습니다.
func sendProtoMessage(resp proto.Message, w http.ResponseWriter) { w.Header().Set("Content-Type", "application/json; charset=utf-8") m := protojson.Marshaler{EmitDefaults: true} m.Marshal(w, resp) // Check for errors here }
참고: google.golang.org/protobuf는 더 이상 사용되지 않는 github을 대체했습니다. .com/golang/protobuf 및 해당 jsonpb 패키지.
위 내용은 Go에서 Protobuf 메시지를 생성할 때 OmitEmpty JSON 태그를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!