title: How to flatten nested JSON
body: <p>Trying to flatten a nested json response from 2 levels deep down to 1.</p>
  
  <p>Here is my working code on Go Playground: <a href="http://play.golang.org/p/kHAYuZUTko" rel="nofollow">http://play.golang.org/p/kHAYuZUTko</a></p>
  
  <p>I want to end up with:</p>
  
  <pre><code>type Social struct {
      GooglePlusPlusOnes  uint32 `Social:"GooglePlusOne"`
      TwitterTweets       uint32 `json:"Twitter"`
      LinkedinShares      uint32 `json:"LinkedIn"`
      PinterestPins       uint32 `json:"Pinterest"`
      StumbleuponStumbles uint32 `json:"StumbleUpon"`
      DeliciousBookmarks  uint32 `json:"Delicious"`
      FacebookLikes       uint32 `json:"??some_magical_nested_address??"`
      FacebookShares      uint32 `json:"??some_magical_nested_address??"`
      FacebookComments    uint32 `json:"??some_magical_nested_address??"`
      FacebookTotal       uint32 `json:"??some_magical_nested_address??"`
  }
  </code></pre>
  
  <p>...instead of a <code>Social</code> type containing a nested <code>Facebook</code> type (seen in the code below).</p>
  
  <p>I suspect I'll need to do a custom <code>UnmarshalJSON</code> function, but I don't know how those work and I'm new to Go.</p>
  
  <p>Suggestions?</p>
  
  <hr>
  
  <p>Here is the code from the <a href="http://play.golang.org/p/kHAYuZUTko" rel="nofollow">Go Playground link</a> above:</p>
  
  <pre><code>package main
  
  import (
      "encoding/json"
      "fmt"
  )
  
  type Social struct {
      GooglePlusPlusOnes  uint32 `json:"GooglePlusOne"`
      TwitterTweets       uint32 `json:"Twitter"`
      LinkedinShares      uint32 `json:"LinkedIn"`
      PinterestPins       uint32 `json:"Pinterest"`
      StumbleuponStumbles uint32 `json:"StumbleUpon"`
      DeliciousBookmarks  uint32 `json:"Delicious"`
      Facebook            Facebook
  }
  
  type Facebook struct {
      FacebookLikes    uint32 `json:"like_count"`
      FacebookShares   uint32 `json:"share_count"`
      FacebookComments uint32 `json:"comment_count"`
      FacebookTotal    uint32 `json:"total_count"`
  }
  
  func main() {
      var jsonBlob = []byte(`[
          {"StumbleUpon":0,"Reddit":0,"Facebook":{"commentsbox_count":4691,"click_count":0,"total_count":298686,"comment_count":38955,"like_count":82902,"share_count":176829},"Delicious":0,"GooglePlusOne":275234,"Buzz":0,"Twitter":7346788,"Diggs":0,"Pinterest":40982,"LinkedIn":0}
      ]`)
  
      var social []Social
      err := json.Unmarshal(jsonBlob, &amp;social)
      if err != nil {
          fmt.Println("error:", err)
      }
      fmt.Printf("%+v", social)
  }
  </code></pre>