簡體   English   中英

如何將 JSON 字符串解析為結構體

[英]How to parse JSON string to struct

我有請求的struct ,值是可選的:

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

以及應該將 json 字符串解析為 struct^ 的函數

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

由於某種原因 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)
}

旁注,如果您一直在檢查錯誤,您就會看到這一點:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM