programing

Go에서 JSON 어레이를 해석하는 방법

goodsources 2023. 4. 6. 21:36
반응형

Go에서 JSON 어레이를 해석하는 방법

json 패키지를 사용하여 Go에서 문자열(어레이)을 해석하려면 어떻게 해야 합니까?

type JsonType struct{
    Array []string
}

func main(){
    dataJson = `["1","2","3"]`
    arr := JsonType{}
    unmarshaled := json.Unmarshal([]byte(dataJson), &arr.Array)
    log.Printf("Unmarshaled: %v", unmarshaled)
}

의 반환값Unmarshal에러입니다.인쇄하는 내용은 다음과 같습니다.

// Return value type of Unmarshal is error.
err := json.Unmarshal([]byte(dataJson), &arr)

이 모든 것을 없앨 수 있습니다.JsonType슬라이스만 사용하면 됩니다.

package main

import (
    "encoding/json"
    "log"
)

func main() {
    dataJson := `["1","2","3"]`
    var arr []string
    _ = json.Unmarshal([]byte(dataJson), &arr)
    log.Printf("Unmarshaled: %v", arr)
}

// prints out:
// 2009/11/10 23:00:00 Unmarshaled: [1 2 3]

코드온플레이: https://play.golang.org/p/GNWlylavam

배경: 포인터를 전달하면Unmarshal메모리 할당을 삭감(또는 완전히 배제)합니다.또, 처리 컨텍스트에서는, 발신자는 같은 값을 반복해 재이용해, 할당을 보존할 수도 있습니다.

주의: 이 답변은 질문을 편집하기 전에 작성되었습니다. 번째 질문에서 &arr에 전달되었다.json.Unmarshal():

unmarshaled := json.Unmarshal([]byte(dataJson), &arr)

다음 주소를 전달합니다.arrJSON 배열을 마킹 해제하려면arr는 배열(또는 슬라이스)이 아니라 구조값입니다.

어레이를 Go 어레이 또는 슬라이스로 분할 해제할 수 있습니다.그러니 패스arr.Array:

dataJson := `["1","2","3"]`
arr := JsonType{}
err := json.Unmarshal([]byte(dataJson), &arr.Array)
log.Printf("Unmarshaled: %v, error: %v", arr.Array, err)

출력(Go Playground에서 테스트):

2009/11/10 23:00:00 Unmarshaled: [1 2 3], error: <nil>

물론 당신은 심지어 그 모든 것을JsonType래퍼, 간단한 사용만 하면 됩니다.[]string슬라이스:

dataJson := `["1","2","3"]`
var s []string
err := json.Unmarshal([]byte(dataJson), &s)

언급URL : https://stackoverflow.com/questions/38867692/how-to-parse-json-array-in-go

반응형