int it = bufstr_add(_json_buffer, key, 0);
bool ret = false; WITH(string, _json_ns, key, ret = _json_parse_value());
if (!ret) {
- bufstr_set(_json_buffer, it, string_null);
+ bufstr_free(_json_buffer, it);
if (required) JSON_FAIL("expected value"); else break;
}
bufstr_set(_json_buffer, len, ftos(n + 1));
case 'n': esc = "\n"; break;
case 't': esc = "\t"; break;
case 'u': esc = "\\u"; break; // TODO
+ case '/': esc = "/"; break;
}
s = strcat(s, esc);
} else {
buf_del(buf);
}
+void json_dump(int buf)
+{
+ for (int i = 0, n = buf_getsize(buf); i < n; ++i) {
+ print(bufstr_get(buf, i), "\n");
+ }
+}
+
#undef JSON_BEGIN
#undef JSON_FAIL
#undef JSON_END
print(s, "\n");
int buf = json_parse(s, _json_parse_object);
EXPECT_NE(-1, buf);
- for (int i = 0, n = buf_getsize(buf); i < n; ++i) {
- print(bufstr_get(buf, i), "\n");
- }
+ json_dump(buf);
SUCCEED();
}