> 백엔드 개발 > Golang > Protobuf 확장에 대한 JSON 필드 이름을 어떻게 사용자 정의할 수 있나요?

Protobuf 확장에 대한 JSON 필드 이름을 어떻게 사용자 정의할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-09 06:25:10
원래의
382명이 탐색했습니다.

How Can I Customize JSON Field Names for Protobuf Extensions?

Protobuf 확장에 대한 JSON 필드 이름 사용자 정의

Protobuf 확장은 JSON으로 직렬화될 때 기본적으로 대괄호와 접두사가 포함된 필드 이름으로 설정됩니다. 확장의 상위 메시지를 나타냅니다. 보다 간결하거나 의미상 의미 있는 JSON 필드 이름을 선호하는 경우 이는 불편할 수 있습니다.

배경

Protobuf의 jsonpb 패키지는 protobuf 메시지에서 JSON을 생성합니다. JSON 필드 이름은 주로 메시지 필드 이름에서 파생됩니다. 그러나 확장의 경우 "[message.extension_message_name]"이라는 특수 형식이 사용됩니다. 이는 여러 확장명이 메시지에 적용될 때 필드 이름 충돌을 방지하기 위해 설계되었습니다.

해결책: json_name 필드 옵션 사용

Protobuf 언어 가이드는 다음 문제에 대한 해결 방법을 제공합니다. 확장을 위한 JSON 필드 이름 사용자 정의: json_name 필드 옵션. 이 옵션으로 확장 필드에 주석을 추가하면 원하는 JSON 필드 이름을 지정할 수 있습니다.

예:

message TestMessage {
    extensions 1 to 10;
    extend TestMessage {
        optional string my_extension_field = 1 [json_name="my_custom_field_name"];
    }
}
로그인 후 복사

이 예에서 확장 필드 my_extension_field는 다음과 같이 JSON으로 직렬화됩니다. my_custom_field_name.

사용 시 이점 json_name

  • JSON 필드 이름 제어: 확장에 사용되는 장황한 명명 규칙을 피합니다.
  • 다른 JSON 필드 이름과의 일관성: 확장 필드 이름을 일반 메시지에 사용되는 명명 규칙에 맞게 정렬합니다. 필드.
  • 향상된 가독성 및 유지 관리성: JSON 출력을 사람이 더 쉽게 읽을 수 있고 작업하기 쉽게 만듭니다.

위 내용은 Protobuf 확장에 대한 JSON 필드 이름을 어떻게 사용자 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿