1. 解析总体流程

1. 解析总体流程

章节目录

1. 解析总体流程

2. 类型分辨

3. 数值解析

4. 字符串解析

5. 数组解析

6. 对象解析

JSON格式从整体而言, 是一个相对简单的结构, 因为它总共就只有六种数据类型, 只需要做好三个大的步骤就行了.

  1. 跳过空格: JSON的标准允许JSON的字符串中穿插空格, 为了解析, 我们需要先把无关的空格跳过, 只解析有用的部分.
  2. 类型分辨: 不同的类型有不同的解析方式, 需要先判断传入的JSON数据的类型, 再进行解析.
  3. 分类解析: 根据不同的类型, 进行对应的解析.
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的重点就是实现这个函数.

这个函数先暂且这样写, 不代表是这个函数最终的实现, 目前看来只需要这些参数就可以了, 后面还会增加.

参考

[1] Workflow 源码解析 Json parser :part1 parse - 知乎 (zhihu.com)

posted @   明天咪西什么  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示