@@ -1064,25 +1064,34 @@ namespace YAML
1064
1064
char * end;
1065
1065
scalar = SCALAR_s (yamlNode);
1066
1066
number = strtod (scalar, &end);
1067
+ bool is_double = false ;
1067
1068
bool is_bool = false ;
1068
1069
bool bool_value = false ;
1069
1070
bool is_string = quoted_implicit || (end == scalar || *end);
1070
1071
if ( is_string && yaml_node_is_bool ( yamlNode, &bool_value ) ) {
1071
1072
is_bool = true ;
1072
1073
}
1074
+ if ( SCALAR_Quoted (yamlNode) ) {
1075
+ is_string = true ;
1076
+ }
1077
+ if ( !is_bool && !is_string ) {
1078
+ is_double = String (scalar).indexOf (" ." ) > 0 ;
1079
+ }
1073
1080
switch ( nt ) {
1074
1081
case YAMLNode::Type::Sequence:
1075
1082
{
1076
1083
JsonArray array = jsonNode[nodename];
1077
1084
if (is_bool) array.add ( bool_value );
1078
1085
else if (is_string) array.add ( scalar );
1079
- else array.add ( number );
1086
+ else if (is_double) array.add ( number );
1087
+ else array.add ( (int64_t )number );
1080
1088
}
1081
1089
break ;
1082
1090
case YAMLNode::Type::Map:
1083
1091
if (is_bool) jsonNode[nodename] = bool_value;
1084
1092
else if (is_string) jsonNode[nodename] = scalar;
1085
- else jsonNode[nodename] = number;
1093
+ else if (is_double) jsonNode[nodename] = number;
1094
+ else jsonNode[nodename] = (int64_t )number;
1086
1095
break ;
1087
1096
default : YAML_LOG_e (" Error invalid nesting type" ); break ;
1088
1097
}
@@ -1110,8 +1119,6 @@ namespace YAML
1110
1119
deserializeYml_JsonObject ( document, itemNode, jsonNode, YAMLNode::Type::Sequence, _nodeItemName.c_str (), depth+1 );
1111
1120
}
1112
1121
}
1113
-
1114
-
1115
1122
}
1116
1123
break ;
1117
1124
case YAML_MAPPING_NODE:
0 commit comments