1
0
mirror of https://github.com/taigrr/yq synced 2025-01-18 04:53:17 -08:00

Convert to JSON now handles non string keys

This commit is contained in:
Mike Farah
2020-09-13 10:44:11 +10:00
parent 5b7b390a33
commit f528b28938
2 changed files with 39 additions and 0 deletions

View File

@@ -58,6 +58,21 @@ type jsonEncoder struct {
encoder *json.Encoder
}
func mapKeysToStrings(node *yaml.Node) {
if node.Kind == yaml.MappingNode {
for index, child := range node.Content {
if index % 2 == 0 { // its a map key
child.Tag = "!!str"
}
}
}
for _, child := range node.Content {
mapKeysToStrings(child)
}
}
func NewJsonEncoder(destination io.Writer, prettyPrint bool, indent int) Encoder {
var encoder = json.NewEncoder(destination)
var indentString = ""
@@ -73,6 +88,8 @@ func NewJsonEncoder(destination io.Writer, prettyPrint bool, indent int) Encoder
func (je *jsonEncoder) Encode(node *yaml.Node) error {
var dataBucket interface{}
// firstly, convert all map keys to strings
mapKeysToStrings(node)
errorDecoding := node.Decode(&dataBucket)
if errorDecoding != nil {
return errorDecoding