Commit ee7f7829 authored by Vishnu Kannan's avatar Vishnu Kannan

Update yaml library.

parent 3043ae91
......@@ -103,7 +103,7 @@
},
{
"ImportPath": "github.com/ghodss/yaml",
"Rev": "3bc1590d16074751993dd3b1a76e7a8d1a916a11"
"Rev": "588cb435e59ee8b6c2795482887755841ad67207"
},
{
"ImportPath": "github.com/golang/glog",
......
......@@ -46,7 +46,12 @@ func Unmarshal(y []byte, o interface{}) error {
func JSONToYAML(j []byte) ([]byte, error) {
// Convert the JSON to an object.
var jsonObj interface{}
err := json.Unmarshal(j, &jsonObj)
// We are using yaml.Unmarshal here (instead of json.Unmarshal) because the
// Go JSON library doesn't try to pick the right number type (int, float,
// etc.) when unmarshling to interface{}, it just picks float64
// universally. go-yaml does go through the effort of picking the right
// number type, so we can preserve number type throughout this process.
err := yaml.Unmarshal(j, &jsonObj)
if err != nil {
return nil, err
}
......
package yaml
import (
"fmt"
"math"
"reflect"
"strconv"
"testing"
)
type MarshalTest struct {
A string
B int64
// Would like to test float64, but it's not supported in go-yaml.
// (See https://github.com/go-yaml/yaml/issues/83.)
C float32
}
func TestMarshal(t *testing.T) {
s := MarshalTest{"a"}
e := []byte("A: a\n")
f32String := strconv.FormatFloat(math.MaxFloat32, 'g', -1, 32)
s := MarshalTest{"a", math.MaxInt64, math.MaxFloat32}
e := []byte(fmt.Sprintf("A: a\nB: %d\nC: %s\n", math.MaxInt64, f32String))
y, err := Marshal(s)
if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment