2

How can I convert a json array to an array of structs? Example:

[
  {"name": "Rob"},
  {"name": "John"}
]

I'm retrieving the json from a request:

body, err := ioutil.ReadAll(r.Body)

How would I unmarshal this into an array?

2
  • 2
    If your structures start getting complicated or long, this tool may save a few minutes of typing: mholt.github.io/json-to-go Commented Feb 24, 2014 at 5:24
  • @Matt: Oh wow! Can't thank you enough for that tool, it's an absolute must for a Go n00b like me! Commented Jan 31, 2016 at 15:50

1 Answer 1

10

you simply use json.Unmarshal for this. Example:

import "encoding/json"


// This is the type we define for deserialization.
// You can use map[string]string as well
type User struct {

    // The `json` struct tag maps between the json name
    // and actual name of the field
    Name string `json:"name"`
}

// This functions accepts a byte array containing a JSON
func parseUsers(jsonBuffer []byte) ([]User, error) {

    // We create an empty array
    users := []User{}

    // Unmarshal the json into it. this will use the struct tag
    err := json.Unmarshal(jsonBuffer, &users)
    if err != nil {
        return nil, err
    }

    // the array is now filled with users
    return users, nil

}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.