From: Remi Collet Date: Thu, 13 Dec 2012 10:46:04 +0000 (+0100) Subject: probably worth an option for this X-Git-Tag: json-c-0.11-20130402~14^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F52%2Fhead;p=thirdparty%2Fjson-c.git probably worth an option for this --- diff --git a/json_object.c b/json_object.c index b078017f..9161b00f 100644 --- a/json_object.c +++ b/json_object.c @@ -562,7 +562,7 @@ static int json_object_double_to_json_string(struct json_object* jso, } else { p = strchr(buf, '.'); } - if (p) { + if (p && (flags & JSON_C_TO_STRING_NOZERO)) { /* last useful digit, always keep 1 zero */ p++; for (q=p ; *q ; q++) { diff --git a/json_object.h b/json_object.h index 26211126..1f704618 100644 --- a/json_object.h +++ b/json_object.h @@ -42,6 +42,10 @@ extern "C" { * for an example of the format. */ #define JSON_C_TO_STRING_PRETTY (1<<1) +/** + * A flag to drop trailing zero for float values + */ +#define JSON_C_TO_STRING_NOZERO (1<<2) #undef FALSE #define FALSE ((json_bool)0) diff --git a/tests/test_locale.c b/tests/test_locale.c index 6926a5d9..da070cf5 100644 --- a/tests/test_locale.c +++ b/tests/test_locale.c @@ -23,8 +23,9 @@ int main(int argc, char **argv) MC_SET_DEBUG(1); - new_obj = json_tokener_parse("[1.2,3.4,123456.78,5.0]"); + new_obj = json_tokener_parse("[1.2,3.4,123456.78,5.0,2.3e10]"); printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj)); + printf("new_obj.to_string()=%s\n", json_object_to_json_string_ext(new_obj,JSON_C_TO_STRING_NOZERO)); json_object_put(new_obj); }