從零開始的 JSON 庫教程(一):啟程解答篇
02-10
本文是《從零開始的 JSON 庫教程》第一個單元的解答篇。解答代碼位於 json-tutorial/tutorial01_answer。
(題圖 Photo by Greg Rakozy)
1. 修正 LEPT_PARSE_ROOT_NOT_SINGULAR
單元測試失敗的是這一行:
EXPECT_EQ_INT(LEPT_PARSE_ROOT_NOT_SINGULAR, lept_parse(&v, "null x"));
我們從 JSON 語法發現,JSON 文本應該有 3 部分:
JSON-text = ws value ws
但原來的 lept_parse() 只處理了前兩部分。我們只需要加入第三部分,解析空白,然後檢查 JSON 文本是否完結:
int lept_parse(lept_value* v, const char* json) { lept_context c; int ret; assert(v != NULL); c.json = json; v->type = LEPT_NULL; lept_parse_whitespace(&c); if ((ret = lept_parse_value(&c, v)) == LEPT_PARSE_OK) { lept_parse_whitespace(&c); if (*c.json !=