Can't unmarshall JSON with key names having spaces

前端 未结 1 466
青春惊慌失措
青春惊慌失措 2020-12-04 03:23

Some JSON data I am getting have spaces in the key names. I am using standard encoding/json library to unmarshal the data. However it is unable to understand th

相关标签:
1条回答
  • 2020-12-04 04:22

    Your json tag specification is incorrect, that's why the encoding/json library defaults to the field name which is Name. But since there is no JSON field with "Name" key, Animal.Name will remain its zero value (which is the empty string "").

    Unmarshaling Order will still work, because the json package will use the field name if json tag specification is missing (tries with both lower and upper-case). Since the field name is identical to the JSON key, it works without extra JSON tag mapping.

    You can't have a space in the tag specification after the colon and before the quotation mark:

    type Animal struct {
        Name  string `json:"Na me"`
        Order string `json:"Order,omitempty"`
    }
    

    With this simple change, it works (try it on the Go Playground):

    [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]
    
    0 讨论(0)
提交回复
热议问题