>백엔드 개발 >Golang >JSON 문자열을 스칼라 값에서 파생된 사용자 정의 Go 유형으로 역정렬화하는 방법은 무엇입니까?

JSON 문자열을 스칼라 값에서 파생된 사용자 정의 Go 유형으로 역정렬화하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-19 12:54:02350검색

How to Unmarshal JSON Strings into Custom Go Types Derived from Scalar Values?

Go에서 JSON Unmarshal은 스칼라에서 파생된 값 유형을 어떻게 처리할 수 있나요?

Go에서는 스칼라 값을 사용하여 간단한 데이터 유형을 나타내는 경우가 많습니다. 정수나 문자열처럼 말이죠. 이러한 스칼라 값에서 파생된 사용자 정의 유형은 정확한 매핑을 보장하기 위해 JSON 역마샬링 중에 특별한 처리가 필요할 수 있습니다.

문제 설명

Go의 스칼라 정수. 목표는 수신 JSON 문자열을 이 사용자 정의 유형의 값으로 자동으로 변환하는 것입니다.

해결책

구조체를 기대하는 UnmarshalJSON의 한계를 극복하려면 다음 단계를 활용하세요.

  1. 포인터 수신기 사용: UnmarshalJSON 메서드에 대한 포인터 수신기입니다. 값 수신자는 메소드 반환 시 변경 사항을 잃습니다.
  2. JSON 텍스트 비정렬화: JSON 텍스트를 비정렬화하여 일반 문자열을 얻고 JSON 인용을 제거합니다.
  3. 조회 및 할당: Lookup 함수를 활용하여 구문 분석된 문자열을 기반으로 사용자 정의 유형의 인스턴스를 검색합니다. 이 값을 포인터 수신기에 할당합니다.

구현 예

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
}

추가 고려 사항

  • JSON 태그와 JSON 데이터 간의 일관성을 보장합니다. 마샬링 해제.
  • 마샬링 해제 중 변경 사항을 잃지 않으려면 포인터를 사용하세요.
  • JSON 직렬화를 사용자 지정하려면 사용자 지정 MarshalJSON 메서드를 고려하세요.

이러한 기술을 구현하면 , Go의 스칼라 값에서 파생된 사용자 정의 유형으로 JSON 문자열을 효과적으로 역마샬링할 수 있습니다.

위 내용은 JSON 문자열을 스칼라 값에서 파생된 사용자 정의 Go 유형으로 역정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.