1. 引言
这段时间做个项目,要加一个配置文件。配置文件之前有用过ini、yaml、lua,这次正好碰巧项目里还要加MQTT,要用到json,就直接拿json来做配置文件了。
其实json很多人是不建议做配置文件的,毕竟没有注释,格式对于手写也不是很友善,但是就当尝试一下新事物嘛,感受一下总是好的。
OK,开始。
2. Json格式
Json相比与ini文件来说,格式要复杂一些。虽然基本单元也是键值对。
要搞清楚几个名词:
- 键值
- 对象
- 数组
从参考链接1里摘了一段,基本上记住and理解这些就够了:
JSON对象是一个无序的"名称/值"键值对的集合:
- 以"{“开始,以”}"结束,允许嵌套使用;
- 每个名称和值成对出现,名称和值之间使用":"分隔;
- 键值对之间用","分隔
- 在这些字符前后允许存在无意义的空白符;
对于键值value,可以有如下值,也是json的基本数据类型:
- 一个新的json对象:使用"{“和”}"表示
- 数组:使用"[“和”]"表示
- 数字:直接表示,可以是整数,也可以是浮点数
- 字符串:使用引号"表示
- 布尔值:false、true中的一个(必须是小写)
- null
对于数组 array,就是键值(value)(注意不是键值对!)的集合
虽然就这么几句,真的理解还挺不容易的,写起来有时候也很容易犯错。
可能也是因为这个,才被觉得不太友善吧。
可以在 这里 做格式的规范和验证。
稍微解释一下键值类型,也就是基本的数据类型。
- 新的Json对象
这个是实现多层的一个重要机制,对象一层层对应下去,实现多层。
可见,"animal"对应的键值就是一个对象,即{“human”:{“age”:18}},
而"human"对应的键值也是一个对象,即{“age”:18},
最后"age"对应的键值是数值18.
{
“animal”:
{
“human”:
{
“age”: 18
}
}
}
- 数组
数组的使用是比较容易混的,尤其和对象混在一起,在 JSON 中,数组值的类型必须属于字符串、数字、对象、数组、布尔或 null。
e.g.
举例:Value为数组
{
“employees”: [
{ “firstName”:“Bill” , “lastName”:“Gates” },
{ “firstName”:“George” , “lastName”:“Bush” },
{ “firstName”:“Thomas” , “lastName”:“Carter” }
]
}
举例:value值为集合
{

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

被折叠的 条评论
为什么被折叠?



