> 백엔드 개발 > Golang > JSON 문자열을 사용자 정의 Go 스칼라 유형으로 어떻게 비정렬화할 수 있습니까?

JSON 문자열을 사용자 정의 Go 스칼라 유형으로 어떻게 비정렬화할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-02 13:08:16
원래의
744명이 탐색했습니다.

How Can I Unmarshal JSON Strings into Custom Go Scalar Types?

Go에서 JSON 값을 파생 스칼라 유형으로 역마샬링

문제

Go에서 JSON 값을 사용자 정의 스칼라 유형으로 역마샬링하는 것은 다음과 같은 이유로 어려울 수 있습니다. UnmarshalJSON 메서드 내에서 스칼라 값을 수정할 수 없습니다. 이 문제는 스칼라에서 파생된 유형에 대해 UnmarshalJSON을 구현할 때 발생하며 JSON의 문자열이 파생된 유형의 값으로 자동 변환되는 것을 방지합니다.

해결책

이 문제를 해결하려면 다음 단계를 따르세요.

  1. 비마샬링 방법에는 포인터 수신기를 사용합니다. 이를 통해 변경이 가능합니다. 메서드 내에서 원래 값에 반영됩니다.
  2. JSON 텍스트를 일반 문자열로 역마샬링합니다. JSON 인용부호 또는 이스케이프 시퀀스를 제거합니다.
  3. 사용 파생 유형의 메서드를 사용하여 문자열을 원하는 값으로 변환합니다. 이 경우 Lookup 메서드를 호출하여 PersonID를 가져옵니다. value.

다음은 PersonID에 대한 UnmarshalJSON 메서드의 수정된 구현입니다.

func (intValue *PersonID) UnmarshalJSON(data []byte) error {
  var s string
  if err := json.Unmarshal(data, &s); err != nil {
    return err
  }
  *intValue = Lookup(s)
  return nil
}
로그인 후 복사

또한 MyType 구조체의 JSON 태그가 일치하는지 확인하세요. 예제 JSON의 필드 이름입니다. 필요한 경우 예제에 사용된 JSON 태그와 일치하도록 json: "person"을 업데이트합니다.

결론

이 단계에 따라 파생된 스칼라 유형에 대해 UnmarshalJSON을 구현하여 자동 변환을 활성화할 수 있습니다. JSON 문자열을 원하는 값 유형으로 변환합니다. 이를 통해 JSON 데이터를 사용자 정의 유형으로 손쉽게 구문 분석할 수 있습니다.

위 내용은 JSON 문자열을 사용자 정의 Go 스칼라 유형으로 어떻게 비정렬화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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