>  기사  >  백엔드 개발  >  Go에서는 언마샬링 중에 동적 JSON 필드 유형을 어떻게 처리할 수 있나요?

Go에서는 언마샬링 중에 동적 JSON 필드 유형을 어떻게 처리할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-24 00:54:09213검색

How Can Go Handle Dynamic JSON Field Types During Unmarshaling?

Go에서 동적 JSON 필드 유형 처리

Go에서 JSON을 구조체로 역마샬링할 때 값 유형에 불일치가 발생할 수 있습니다. API 요청 전반에 걸친 특정 키. 이 문제는 서버가 동일한 키에 대해 다른 개체 구조나 문자열 참조를 보낼 때 발생합니다. Go에서는 언마샬링을 위해 고정된 구조가 필요하기 때문에 문제가 될 수 있습니다.

이 문제를 해결하려면 인터페이스 유형을 사용하는 유형 동적 접근 방식을 사용할 수 있습니다. 다음 JSON 데이터를 고려하세요.

{
  "mykey": [
    {obj1}, 
    {obj2}
  ]
}

이 동적 특성을 캡처하기 위해 다음과 같이 구조체를 정의할 수 있습니다.

type Data struct {
    MyKey []interface{} `json:"mykey"`
}

다음과 같이 문자열 값이 포함된 JSON이 발견되는 경우:

{
  "mykey": [
    "/obj1/is/at/this/path", 
    "/obj2/is/at/this/other/path"
  ]
}

MyKey 슬라이스 요소는 문자열로 디코딩됩니다. 객체의 경우 map[string]interface{} 값으로 디코딩됩니다. 이러한 구별은 유형 스위치를 사용하여 이루어질 수 있습니다.

for i, v := range data.MyKey {
    switch x := v.(type) {
    case string:
        fmt.Println("Got a string: ", x)
    case map[string]interface{}:
        fmt.Printf("Got an object: %#v\n", x)
    }
}

JSON을 인터페이스 유형으로 역마샬링하고 유형 스위치를 사용함으로써 Go 개발자는 제공된 구조에 관계없이 동적 필드 유형을 처리하고 데이터를 적절하게 구문 분석할 수 있습니다. 서버에서.

위 내용은 Go에서는 언마샬링 중에 동적 JSON 필드 유형을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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