| @@ -562,7 +562,7 @@ static int json_object_double_to_json_string(struct json_object* jso, | |||||
| } else { | } else { | ||||
| p = strchr(buf, '.'); | p = strchr(buf, '.'); | ||||
| } | } | ||||
| if (p) { | |||||
| if (p && (flags & JSON_C_TO_STRING_NOZERO)) { | |||||
| /* last useful digit, always keep 1 zero */ | /* last useful digit, always keep 1 zero */ | ||||
| p++; | p++; | ||||
| for (q=p ; *q ; q++) { | for (q=p ; *q ; q++) { | ||||
| @@ -42,6 +42,10 @@ extern "C" { | |||||
| * for an example of the format. | * for an example of the format. | ||||
| */ | */ | ||||
| #define JSON_C_TO_STRING_PRETTY (1<<1) | #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 | #undef FALSE | ||||
| #define FALSE ((json_bool)0) | #define FALSE ((json_bool)0) | ||||
| @@ -23,8 +23,9 @@ int main(int argc, char **argv) | |||||
| MC_SET_DEBUG(1); | 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(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); | json_object_put(new_obj); | ||||
| } | } | ||||