1. 解析总体流程
1. 解析总体流程
章节目录
JSON格式从整体而言, 是一个相对简单的结构, 因为它总共就只有六种数据类型, 只需要做好三个大的步骤就行了.
- 跳过空格: JSON的标准允许JSON的字符串中穿插空格, 为了解析, 我们需要先把无关的空格跳过, 只解析有用的部分.
- 类型分辨: 不同的类型有不同的解析方式, 需要先判断传入的JSON数据的类型, 再进行解析.
- 分类解析: 根据不同的类型, 进行对应的解析.
json_value_t *json_value_parse(const char *jsonStr)
{
json_value_t *value = NULL;
int ret;
if (jsonStr == NULL)
{
return NULL;
}
while (isspace(*jsonStr))
{
jsonStr++;
}
ret = __parse_json_value(jsonStr, value);
if (ret < 0)
{
return NULL;
}
return value;
}
这个代码实现了上面说的两个步骤
通过while循环来跳过为空格的字符,
__parse_json_value
这个函数就是解析的核心.
这里来看看__parse_json_value
函数, 原型: int __parse_json_value(const char *jsonStr, json_value_t *value)
, 很好理解, 入参是JSON字符串, 出参是解析后的json_value_t
的结构体和int类型的错误码. 解析JSON的重点就是实现这个函数.
这个函数先暂且这样写, 不代表是这个函数最终的实现, 目前看来只需要这些参数就可以了, 后面还会增加.