title: Partly JSON unmarshal into a map in Go
body: <p>My websocket server will receive and unmarshal JSON data. This data will always be wrapped in an object with key/value pairs. The key-string will act as value identifier, telling the Go server what kind of value it is. By knowing what type of value, I can then proceed to JSON unmarshal the value into the correct type of struct.</p>
  
  <p>Each json-object might contain multiple key/value pairs.</p>
  
  <p>Example JSON:</p>
  
  <pre><code>{
      "sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
      "say":"Hello"
  }
  </code></pre>
  
  <p>Is there any easy way using the <code>"encoding/json"</code> package to do this?</p>
  
  <pre><code>package main
  
  import (
      "encoding/json"
      "fmt"
  )
  
  // the struct for the value of a "sendMsg"-command
  type sendMsg struct {
      user string
      msg  string
  }
  // The type for the value of a "say"-command
  type say string
  
  func main(){
      data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)
  
      // This won't work because json.MapObject([]byte) doesn't exist
      objmap, err := json.MapObject(data)
  
      // This is what I wish the objmap to contain
      //var objmap = map[string][]byte {
      //  "sendMsg": []byte(`{"user":"ANisus","msg":"Trying to send a message"}`),
      //  "say": []byte(`"hello"`),
      //}
      fmt.Printf("%v", objmap)
  }
  </code></pre>
  
  <p>Thanks for any kind of suggestion/help!</p>