Fixed json_print_value so that ending double quote of JSON string value will not...
[fio.git] / json.c
diff --git a/json.c b/json.c
index f3ec0bb45f0852dde21d9cdbf0de97e46725a371..2160d296445fae5cf5aebbd8fbdb91155bf71cfc 100644 (file)
--- a/json.c
+++ b/json.c
@@ -40,7 +40,7 @@ static struct json_value *json_create_value_int(long long number)
        return value;
 }
 
-static struct json_value *json_create_value_float(float number)
+static struct json_value *json_create_value_float(double number)
 {
        struct json_value *value = malloc(sizeof(struct json_value));
 
@@ -340,14 +340,18 @@ static void json_print_array(struct json_array *array, struct buf_output *out)
 static void json_print_value(struct json_value *value, struct buf_output *out)
 {
        switch (value->type) {
-       case JSON_TYPE_STRING:
-               log_buf(out, "\"%s\"", value->string);
-               break;
+       case JSON_TYPE_STRING: {
+                       const char delimiter = '"';
+                       buf_output_add(out, &delimiter, sizeof(delimiter));
+                       buf_output_add(out, value->string, strlen(value->string));
+                       buf_output_add(out, &delimiter, sizeof(delimiter));
+                       break;
+               }
        case JSON_TYPE_INTEGER:
                log_buf(out, "%lld", value->integer_number);
                break;
        case JSON_TYPE_FLOAT:
-               log_buf(out, "%.2f", value->float_number);
+               log_buf(out, "%f", value->float_number);
                break;
        case JSON_TYPE_OBJECT:
                json_print_object(value->object, out);