cJSON详细剖析(四)----cJSON_Print()函数

10 篇文章 0 订阅

今天我们讲讲cJSON_Print(json)函数时怎么实现的,我们按住F12点进去(vs编译器)。

如上图,我们继续跳。

因为p为null,所以这里在else里选中print_object()继续跳转。

print_object()

print_object()应该算是第一个有内容的函数了,这里我们分析这个print_object()函数。

上面图中我做了部分注释,根据text字符串(如下)我们知道,numentries应该是不等于0 的,又因为p为null,所以图中if()语句也不会跳进去。此外注意一下,depth指的是有几个缩进,也就是是有几个'\t'。

好了,我们拉到else语句,因为内容还是有点多,我贴出部分代码,图中有一部分注释。

我们主要看看while()里面的内容,print_string_str()函数我会在后面分析,大概的意思就是返回一个字符串形式的字符串,也就是说打印出来是带有双引号的而不是一串简单的字符。这里的print_value()函数,我们通过跳转也会发现最后还是调用print_string_str()函数,所以这就先不分析了,但意思还是可以看出来的,返回的应该还是一个字符串。

我们继续往下拉,一些不是不是很重要以及比较简单的就跳过了,接下来我们看最后的输出字符串out的部分。

上图我们能明显额看出来,在组装一个object型(可以看到有大括号)的字符串,其还是比较好理解的,需要记得是转义字符'\t' 代表的是缩进,也就是平时敲代码的tab键。到这里cJSON_Print()函数差不多也就讲完了,我也不知道如何细致的去讲解,抱歉了哈。

此外,我们根据字符串text,可以发现还有valuestring是数字和false的情况没有判断,我们继续把这个给判断了。

 

 

我们找到print_value函数,根据参数条件,找到else部分,框中的俩函数我们还没去分析,我们继续去分析。那就先分析print_number()函数吧。

到这里才发现,在分析cJSON_Parse()函数的时候就应该分析存储cJSON格式时的一些参数了,还是先去看看parse_value()函数。

嗯,想了下,上面的分析还是重开一博客写吧,这里写的已经够乱了。这里先把cJSON_Print()函数讲解完。如下图,我们把大概的print_object()函数讲解完。当然这里只是针对于某一种text,对于一些不同的text,可能用到的不同函数,我们后续再讲。

 

好吧,这里就这样,就先不写了,最近比较忙,反正也不着急,慢慢,总想一口气看完,哈哈哈。

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值