配置文件之json——Json格式与cJson库解析

本文介绍如何使用cJSON库解析JSON配置文件,涵盖JSON格式解析、cJSON库使用及常见问题解决,适合初学者了解JSON配置文件的处理。

1. 引言

这段时间做个项目,要加一个配置文件。配置文件之前有用过ini、yaml、lua,这次正好碰巧项目里还要加MQTT,要用到json,就直接拿json来做配置文件了。
其实json很多人是不建议做配置文件的,毕竟没有注释,格式对于手写也不是很友善,但是就当尝试一下新事物嘛,感受一下总是好的。
OK,开始。

2. Json格式

Json相比与ini文件来说,格式要复杂一些。虽然基本单元也是键值对。

要搞清楚几个名词:

  • 键值
  • 对象
  • 数组

从参考链接1里摘了一段,基本上记住and理解这些就够了

JSON对象是一个无序的"名称/值"键值对的集合

  • 以"{“开始,以”}"结束,允许嵌套使用;
  • 每个名称和值成对出现,名称和值之间使用":"分隔;
  • 键值对之间用","分隔
  • 在这些字符前后允许存在无意义的空白符;

对于键值value,可以有如下值,也是json的基本数据类型:

  • 一个新的json对象:使用"{“和”}"表示
  • 数组:使用"[“和”]"表示
  • 数字:直接表示,可以是整数,也可以是浮点数
  • 字符串:使用引号"表示
  • 布尔值:false、true中的一个(必须是小写)
  • null

对于数组 array,就是键值(value)(注意不是键值对!)的集合

虽然就这么几句,真的理解还挺不容易的,写起来有时候也很容易犯错。
可能也是因为这个,才被觉得不太友善吧。
可以在 这里 做格式的规范和验证。

稍微解释一下键值类型,也就是基本的数据类型。

  1. 新的Json对象
    这个是实现多层的一个重要机制,对象一层层对应下去,实现多层。
    可见,"animal"对应的键值就是一个对象,即{“human”:{“age”:18}},
    而"human"对应的键值也是一个对象,即{“age”:18},
    最后"age"对应的键值是数值18.

{
“animal”:
{
“human”:
{
“age”: 18
}
}
}

  1. 数组
    数组的使用是比较容易混的,尤其和对象混在一起,在 JSON 中,数组值的类型必须属于字符串、数字、对象、数组、布尔或 null。
    e.g.

举例:Value为数组
{
“employees”: [
{ “firstName”:“Bill” , “lastName”:“Gates” },
{ “firstName”:“George” , “lastName”:“Bush” },
{ “firstName”:“Thomas” , “lastName”:“Carter” }
]
}
举例:value值为集合
{

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值