> 백엔드 개발 > Golang > 알 수 없는 구조로 중첩된 JSON을 역마샬링하는 방법은 무엇입니까?

알 수 없는 구조로 중첩된 JSON을 역마샬링하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-02 22:48:02
원래의
888명이 탐색했습니다.

How to Unmarshal Nested JSON with Unknown Structure?

구조를 알 수 없는 중첩 JSON 역마샬링

다양한 구조의 JSON 문서를 저장하는 데이터베이스로 작업할 때 정확한 구조를 미리 알지 못한 채 데이터를 특정 구조로 변환합니다. 여기서는 이 문제를 해결하기 위한 두 가지 접근 방식을 살펴봅니다.

유형 확인

JSON 데이터를 언마샬링하기 전에 해당 유형을 결정해야 합니다. 이는 다음 방법 중 하나를 사용하여 달성할 수 있습니다.

  • map[string]인터페이스로 비정렬화{}: json.RawMessage를 지도로 비정렬화함으로써 우리는 액세스할 수 있습니다. 데이터 유형을 식별하는 "유형" 필드. 이 접근 방식을 사용하면 반복적인 비정렬화를 피할 수 있습니다.
  • 정규 표현식을 사용하여 유형 문자열을 추출합니다. 정규 표현식을 사용하여 "유형" 필드를 검색하고 해당 값을 추출할 수 있습니다. 그런 다음 알려진 유형과 비교할 수 있습니다.

특정 구조체로 역마샬링

JSON 데이터의 유형을 결정한 후에는 이를 역마샬링할 수 있습니다. 해당 구조체에. 귀하의 경우 가능한 유형을 미리 알고 있다면 일련의 if-else 문이나 스위치 문을 생성하여 데이터를 적절한 구조체로 역정렬화할 수 있습니다.

반복적인 비정렬화 방지

반복적인 비정렬화를 방지하려면 먼저 json.RawMessage의 복사본을 만들고 이를 인터페이스로 비정렬화할 수 있습니다. 유형을 알고 나면 원본 json.RawMessage를 결정된 유형의 구조체로 역정렬화할 수 있습니다.

정규 표현식을 사용하여 유형 결정

원하는 경우 정규식을 사용하면 아래 단계를 따를 수 있습니다.

  1. regexp.MustCompile 함수를 사용하여 "유형" 필드와 일치하는 정규식을 생성합니다.
  2. regexp를 사용합니다. 유형 문자열을 추출하는 FindStringSubmatch 함수.
  3. 추출된 유형 문자열을 사용하여 언마샬링에 적합한 구조체를 결정합니다.

결론

By 위의 접근 방식을 사용하면 정확한 구조를 몰라도 중첩된 JSON 데이터를 효율적으로 역마샬링할 수 있습니다. 이를 통해 동적 데이터 소스로 작업할 때 유연성과 편의성이 향상됩니다.

위 내용은 알 수 없는 구조로 중첩된 JSON을 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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