programing

구조체에 대한 JSON 문자열 구문 분석 방법

cafebook 2023. 2. 22. 23:12
반응형

구조체에 대한 JSON 문자열 구문 분석 방법

있습니다struct요청의 값은 옵션입니다.

type Request struct {
    Operation string      `json:"operation"`
    Key string            `json:"key"`
    Value string          `json:"value"`
}

그리고 json 문자열을 structure로 해석하는 함수^

go func() {
    s := string("{'operation': 'get', 'key': 'example'}")
    data := Request{}
    json.Unmarshal([]byte(s), data)
    log.Printf("Operation: %s", data.Operation)
}

어떤 이유에서인지 데이터입니다.작업이 비어 있습니다.여기 뭐가 잘못됐나요?

두 가지 문제가 있습니다. 첫째, json이 유효하지 않습니다."대신'

둘째, 당신은 마샬을 풀어야 한다.&data하지 않다data

https://play.golang.org/p/zdMq5_ex8G

package main

import (
    "fmt"
    "encoding/json"
)

type Request struct {
    Operation string      `json:"operation"`
    Key string            `json:"key"`
    Value string          `json:"value"`
}

func main() {
    s := string(`{"operation": "get", "key": "example"}`)
    data := Request{}
    json.Unmarshal([]byte(s), &data)
    fmt.Printf("Operation: %s", data.Operation)
}

참고로 오류를 체크하고 있었다면 다음과 같이 표시됩니다.

s := string("{'operation': 'get', 'key': 'example'}")

err := json.Unmarshal([]byte(s), data)
if err != nil {
    fmt.Println(err.Error()) 
    //json: Unmarshal(non-pointer main.Request)
}

err := json.Unmarshal([]byte(s), &data)
if err != nil {
    fmt.Println(err.Error()) 
    //invalid character '\'' looking for beginning of object key string
}

언급URL : https://stackoverflow.com/questions/47270595/how-to-parse-json-string-to-struct

반응형