title: JSON unmarshaling with long numbers gives floating point number
body: <p>I was marshaling and unmarshaling JSONs using golang and when I want to do it with number fields golang transforms it in floating point numbers instead of use long numbers, for example.</p>
  
  <p>I have the following JSON:</p>
  
  <pre><code>{
      "id": 12423434, 
      "Name": "Fernando"
  }
  </code></pre>
  
  <p>After <code>marshal</code> it to a map and <code>unmarshal</code> again to a json string I get:</p>
  
  <pre><code>{
      "id":1.2423434e+07,
      "Name":"Fernando"
  }
  </code></pre>
  
  <p>As you can see the <code>"id"</code> field is in floating point notation. </p>
  
  <p>The code that I am using is the following:</p>
  
  <pre><code>package main
  
  import (
      "encoding/json"
      "fmt"
      "os"
  )
  
  func main() {
  
      //Create the Json string
      var b = []byte(`
          {
          "id": 12423434, 
          "Name": "Fernando"
          }
      `)
  
      //Marshal the json to a map
      var f interface{}
      json.Unmarshal(b, &amp;f)
      m := f.(map[string]interface{})
  
      //print the map
      fmt.Println(m)
  
      //unmarshal the map to json
      result,_:= json.Marshal(m)
  
      //print the json
      os.Stdout.Write(result)
  
  }
  </code></pre>
  
  <p>It prints:</p>
  
  <pre><code>map[id:1.2423434e+07 Name:Fernando]
  {"Name":"Fernando","id":1.2423434e+07}
  </code></pre>
  
  <p>It appears to be that the first <code>marshal</code> to the map generates the FP. How can I fix it to a long? </p>
  
  <p>This is the link to the program in the goland playground:
  <a href="http://play.golang.org/p/RRJ6uU4Uw-" rel="noreferrer">http://play.golang.org/p/RRJ6uU4Uw-</a></p>