(un)marshalling json golang not working

前端 未结 2 717
一向
一向 2020-11-28 10:54

I\'m playing with Go and am stumped as to why json encode and decode don\'t work for me

I think i copied the examples almost verbatim, but the output says both marsh

相关标签:
2条回答
  • 2020-11-28 11:05

    Capitalize names of structure fields

    type testStruct struct {
        clip string `json:"clip"` // Wrong.  Lowercase - other packages can't access it
    }
    

    Change to:

    type testStruct struct {
        Clip string `json:"clip"`
    }
    
    0 讨论(0)
  • 2020-11-28 11:13

    For example,

    package main
    
    import "fmt"
    import "encoding/json"
    
    type testStruct struct {
        Clip string `json:"clip"`
    }
    
    func main() {
        //unmarshal test
        var testJson = "{\"clip\":\"test\"}"
        var t testStruct
        var jsonData = []byte(testJson)
        err := json.Unmarshal(jsonData, &t)
        if err != nil {
            fmt.Printf("There was an error decoding the json. err = %s", err)
            return
        }
        fmt.Printf("contents of decoded json is: %#v\r\n", t)
    
        //marshal test
        t.Clip = "test2"
        data, err := json.Marshal(&t)
        if err != nil {
            fmt.Printf("There was an error encoding the json. err = %s", err)
            return
        }
        fmt.Printf("encoded json = %s\r\n", string(data))
    }
    

    Output:

    contents of decoded json is: main.testStruct{Clip:"test"}
    encoded json = {"clip":"test2"}
    

    Playground:

    http://play.golang.org/p/3XaVougMTE

    Export the struct fields.

    type testStruct struct {
        Clip string `json:"clip"`
    }
    

    Exported identifiers

    An identifier may be exported to permit access to it from another package. An identifier is exported if both:

    • the first character of the identifier's name is a Unicode upper case letter (Unicode class "Lu"); and
    • the identifier is declared in the package block or it is a field name or method name.

    All other identifiers are not exported.

    0 讨论(0)
提交回复
热议问题