title: How to decode json into structs
body: <p>I'm trying to decode some json in Go but some fields don't get decoded. 
  See the code running  in browser <a href="http://play.golang.org/p/ZunE4_lKKv" rel="nofollow noreferrer">here</a>: </p>
  
  <p>What am I doing wrong?</p>
  
  <p>I need only the MX records so I didn't define the other fields. As I understand from the godoc you don't need to define the fields you don't use/need.</p>
  
  <pre><code>// You can edit this code!
  // Click here and start typing.
  package main
  
  import "fmt"
  import "encoding/json"
  
  func main() {
  
      body := `
    {"response": {
    "status": "SUCCESS",
    "data": {
      "mxRecords": [
        {
          "value": "us2.mx3.mailhostbox.com.",
          "ttl": 1,
          "priority": 100,
          "hostName": "@"
        },
        {
          "value": "us2.mx1.mailhostbox.com.",
          "ttl": 1,
          "priority": 100,
          "hostName": "@"
        },
        {
          "value": "us2.mx2.mailhostbox.com.",
          "ttl": 1,
          "priority": 100,
          "hostName": "@"
        }
      ],
      "cnameRecords": [
        {
          "aliasHost": "pop.a.co.uk.",
          "canonicalHost": "us2.pop.mailhostbox.com."
        },
        {
          "aliasHost": "webmail.a.co.uk.",
          "canonicalHost": "us2.webmail.mailhostbox.com."
        },
        {
          "aliasHost": "smtp.a.co.uk.",
          "canonicalHost": "us2.smtp.mailhostbox.com."
        },
        {
          "aliasHost": "imap.a.co.uk.",
          "canonicalHost": "us2.imap.mailhostbox.com."
        }
      ],
      "dkimTxtRecord": {
        "domainname": "20a19._domainkey.a.co.uk",
        "value": "\"v=DKIM1; g=*; k=rsa; p=DkfbhO8Oyy0E1WyUWwIDAQAB\"",
        "ttl": 1
      },
      "spfTxtRecord": {
        "domainname": "a.co.uk",
        "value": "\"v=spf1 redirect=_spf.mailhostbox.com\"",
        "ttl": 1
      },
      "loginUrl": "us2.cp.mailhostbox.com"
    }
  }}`
  
      type MxRecords struct {
          value    string
          ttl      int
          priority int
          hostName string
      }
  
  
  
      type Data struct {
          mxRecords []MxRecords
      }
  
      type Response struct {
          Status string `json:"status"`
          Data   Data   `json:"data"`
      }
      type apiR struct {
          Response Response
      }
  
      var r apiR
      err := json.Unmarshal([]byte(body), &amp;r)
      if err != nil {
          fmt.Printf("err was %v", err)
      }
      fmt.Printf("decoded is %v", r)
  
  }
  </code></pre>