From e9b54861c6853418cfbbb8f90381b3393e2082d4 Mon Sep 17 00:00:00 2001 From: fengzero Date: Tue, 6 Sep 2022 08:20:05 +0000 Subject: [PATCH] fix(json): decode int as float/double --- src/utils/json.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/utils/json.c b/src/utils/json.c index ac68a5fd..1d2b06e1 100644 --- a/src/utils/json.c +++ b/src/utils/json.c @@ -131,10 +131,18 @@ static int decode_object(json_t *root, neu_json_elem_t *ele) ele->v.val_str = strdup(json_string_value(ob)); break; case NEU_JSON_FLOAT: - ele->v.val_float = json_real_value(ob); + if (json_is_integer(ob)) { + ele->v.val_float = (float) json_integer_value(ob); + } else { + ele->v.val_float = json_real_value(ob); + } break; case NEU_JSON_DOUBLE: - ele->v.val_double = json_real_value(ob); + if (json_is_integer(ob)) { + ele->v.val_double = (double) json_integer_value(ob); + } else { + ele->v.val_double = json_real_value(ob); + } break; case NEU_JSON_BOOL: ele->v.val_bool = json_boolean_value(ob);