>  기사  >  백엔드 개발  >  JSON 배열을 Go 구조체로 구문 분석하는 방법은 무엇입니까?

JSON 배열을 Go 구조체로 구문 분석하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-26 18:01:15856검색

How to Parse JSON Arrays into Go Structs?

Go에서 JSON 배열을 처리하는 방법

이 쿼리는 Go에서 JSON 배열을 구문 분석하는 데 어려움을 겪습니다. JSON 배열은 객체의 컬렉션이며, 주어진 예에서 API 호출에서 반환된 데이터는 복잡한 객체의 배열입니다.

이 배열을 구문 분석하려면 다음을 반영하는 Go 구조체를 정의해야 합니다. 배열의 객체 구조. PublicKey 구조체 정의부터 시작하겠습니다.

type PublicKey struct {
    name string
    price string
}

다음으로 PublicKey 개체의 전체 배열을 나타내는 KeysResponse 구조체를 정의해야 합니다.

type KeysResponse struct {
    Collection []PublicKey
}

그런 다음 JSON을 다음으로 역정렬화합니다. KeysResponse 유형의 변수:

keys := make([]PublicKey, 0)
err := json.Unmarshal([]byte(s), &keys)
if err == nil {
    fmt.Printf("%+v\n", keys)
} else {
    fmt.Println(err)
    fmt.Printf("%+v\n", keys)
}

json.Unmarshal 함수는 자동으로 JSON에서 구문 분석된 데이터로 키 변수를 채웁니다. 그러나 원래 질문의 코드에는 간과된 세부 사항이 포함되어 있습니다. 즉, PublicKey 구조체의 필드를 내보내야 합니다(대문자로 시작).

이렇게 변경하면 코드가 JSON 배열과 출력을 올바르게 구문 분석합니다. 원하는 형식의 결과:

[{Name:Galaxy Nexus Price:3460.00} {Name:Galaxy Nexus Price:3460.00}]

질문의 JSON 텍스트에는 소문자로 된 필드 이름이 포함되어 있지만 json 패키지는 이를 필드 이름과 일치시킬 만큼 지능적입니다. PublicKey 구조체의 내보낸 필드.

보다 복잡한 JSON 구조의 경우 구조체 태그를 사용하여 JSON 필드 이름을 구조체 필드에 명시적으로 매핑하는 것이 좋습니다. 또한 맵 조각([]map[string]interface{})으로 역마샬링하는 것은 대체 접근 방식을 제공하지만 수동 인덱싱 및 유형 어설션이 필요합니다.

위 내용은 JSON 배열을 Go 구조체로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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