diff --git a/include/parse.h b/include/parse.h index 7617b24..145f564 100644 --- a/include/parse.h +++ b/include/parse.h @@ -21,7 +21,7 @@ struct json_value { struct json_value** array; char* string; bool boolean; - int64_t number; + double number; }; }; diff --git a/src/parse.c b/src/parse.c index 49b2b2e..68f0cbf 100644 --- a/src/parse.c +++ b/src/parse.c @@ -443,19 +443,21 @@ void print_array(struct json_value** arr, int cur_indent, int indent_amount) { putchar('['); + if(arr[0] == NULL) { + putchar(']'); + return; + } + size_t i; - for (i = 0; arr[i + 1] != NULL; i++) { + for (i = 0; arr[i+1] != NULL; i++) { putchar('\n'); add_indent(cur_indent); print_json_value(*arr[i], cur_indent + indent_amount, indent_amount); - putchar(','); + if( arr[i+1] != NULL ) + putchar(','); } - putchar('\n'); - add_indent(cur_indent); - print_json_value(*arr[i], cur_indent + indent_amount, indent_amount); - putchar('\n'); add_indent(cur_indent - indent_amount * 2); putchar(']'); @@ -469,7 +471,7 @@ void print_json_value(struct json_value val, int cur_indent, printf("\"%s\"", val.string); break; case number: - printf("%zu", val.number); + printf("%lf", val.number); break; case boolean: printf("%s", val.boolean ? "true" : "false");