프로토콜 버퍼 구조체의 생성된 JSON 태그에서 생략 태그를 제거하는 방법
특정 사용 사례에서는 프로토콜 버퍼 구조체에 대해 생성된 JSON 태그의 생략 태그입니다. 특히 gRPC와 함께 사용되는 프로토콜 버퍼는 데이터 직렬화 및 전송을 위한 강력한 도구입니다. 그러나 생략 태그를 포함하면 JSON 마샬링 중에 기본값이나 빈 값이 누락될 수 있어 바람직하지 않을 수 있습니다.
문제
사용 시 JSON 프록시가 있는 프로토콜 버퍼의 경우 생성된 구조체에는 예제에서 볼 수 있듯이 JSON 태그에 포함된 생략 태그가 있을 수 있습니다. 아래:
message Status { int32 code = 1; string message = 2; }
생성된 결과 구조체:
type Status struct { Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"` Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` }
해결책
생성된 구조체에서 생략 태그를 제거하려면 다음을 수행하세요. 가능한 접근 방식은 두 가지입니다.
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
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) // You should check for errors here }
이러한 접근 방식 중 하나를 구현하면 생성된 JSON 태그에서 생략 태그를 효과적으로 제거할 수 있습니다. 프로토콜 버퍼 구조를 사용하여 JSON 마샬링 중에 기본값이나 빈 값이 포함되도록 합니다.
위 내용은 프로토콜 버퍼 구조체의 JSON에서 'omitempty' 태그를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!