自学内容网 自学内容网

JSON的C实现(上)

JSON的C实现(上)

前言

JSON是众多项目中较为常见的数据交换格式,为不同项目、系统间的信息交换提供了一个规范化标准。JSON的实现方式有很多,网上也有众多资源。本文是本着学习JSON结构的目的来讲述在C语言中实现JSON,起到抛砖引玉的目的,有别于直接拉取网上资源直接使用。这样方便读者做二次开发。

JSON简介

JSON是一种基于文本的轻量级数据交换格式。具体可参考JSON介绍

其主要有这几种基本结构:
键值对:用“键:值”的形式表示;
例如


"name": "John"
或
"age": 30

对象:被{ }包围,对象里的数据用键值对形式表示,不同的键值对之间用逗号“,”隔开;
JSON对象示意图

例如


{
    "name": "John",
    "age": 30
}

数组:被[ ]包围,数组是值的集合,不同值之间用逗号“,”隔开;
JSON数组示意图

例如:


[
    "掌芯元器",
    256,
    "true",
    {
        "name": "John",
        "age": 30,
        "Lucky numbers": [
            3,
            5,
            6
        ],
        "grades": {
            "math": 90,
            "english": 95
        }
    },
    [
        1,
        [
            2,
            3,
            4
        ],
        3
    ]
]

其中,JSON中的键必须是双引号括起来的字符串;值可以是双引号括起来的字符串、数值、布尔值、null、对象或者数组,它们之间是可以嵌套的,如下图:

JSON值示意图

JSON的C实现思路

我们由上文可知,JSON是由键值对、值、数组、对象等组成,我们要建立一个统一的数据结构来表示他们,并且它们之间可能存在着嵌套的关系,这些组成是树状结构,因此我们可以将其分为一个个节点,采用链表的方式将不同层级的数据组织起来。

所以我们创建的数据结构要包含当前节点的结构类型、具体数据、上下级节点的指针。

有了上述的数据结构,接下来就是怎么将字符串与JSON的数据结构进行转换。

我们可以看到JSON的内容表现有数字、BOOL值、字符串、NULL,我们先要编写这些基本的处理函数,然后再进行数据类型转换。

对于此,我们要思考:

如何判断将要处理的数据是字符串、数字、BOOL值、NULL值?以及对应的处理方法是什么?
我们可以将其拆分成一个个独立的函数去处理。

在上述问题的解决过程中,我们还要考虑到JSON的嵌套关系,当遇到"、,、{、}、[、]时,我们需要对其进行处理。

通过上述函数处理完一个JSON字符串之后,我们就可以得到一个个JSON节点,节点的结构中又将不同层级的数据组织起来。

而将JSON结构转换成字符串与上述思路相似,我们只需要将不同数据类型转换成字符串,然后将字符串拼接起来即可。

小结

介于篇幅,本文先对JSON的C实现做一下思想分析。

我们将会在后续的文章具体介绍如何使用C语言实现JSON的解析和转换。


原文地址:https://blog.csdn.net/zxyq_2024/article/details/142623315

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!