mirror of
https://github.com/mikefarah/yq.git
synced 2025-03-09 18:35:36 +00:00
Fixed number parsing as float bug in JSON #1756
This commit is contained in:
parent
0a0182da13
commit
e09779e004
@ -54,8 +54,16 @@ func (dec *jsonDecoder) convertToYamlNode(data *orderedMap) (*yaml.Node, error)
|
|||||||
case nil:
|
case nil:
|
||||||
return createScalarNode(nil, "null"), nil
|
return createScalarNode(nil, "null"), nil
|
||||||
case float64, float32:
|
case float64, float32:
|
||||||
// json decoder returns ints as float.
|
// json decoder returns ints as float.'
|
||||||
return parseSnippet(fmt.Sprintf("%v", rawData))
|
intNum := int(rawData.(float64))
|
||||||
|
|
||||||
|
// if the integer representation is the same as the original
|
||||||
|
// then its an int.
|
||||||
|
if float64(intNum) == rawData.(float64) {
|
||||||
|
return createScalarNode(intNum, fmt.Sprintf("%v", intNum)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return createScalarNode(rawData, fmt.Sprintf("%v", rawData)), nil
|
||||||
case int, int64, int32, string, bool:
|
case int, int64, int32, string, bool:
|
||||||
return createScalarNode(rawData, fmt.Sprintf("%v", rawData)), nil
|
return createScalarNode(rawData, fmt.Sprintf("%v", rawData)), nil
|
||||||
case []*orderedMap:
|
case []*orderedMap:
|
||||||
|
@ -198,8 +198,8 @@ var jsonScenarios = []formatScenario{
|
|||||||
{
|
{
|
||||||
description: "numbers",
|
description: "numbers",
|
||||||
skipDoc: true,
|
skipDoc: true,
|
||||||
input: "[3, 3.0, 3.1, -1]",
|
input: "[3, 3.0, 3.1, -1, 999999, 1000000, 1000001, 1.1]",
|
||||||
expected: "- 3\n- 3\n- 3.1\n- -1\n",
|
expected: "- 3\n- 3\n- 3.1\n- -1\n- 999999\n- 1000000\n- 1000001\n- 1.1\n",
|
||||||
scenarioType: "decode-ndjson",
|
scenarioType: "decode-ndjson",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user