网页设计框架代码示例天津seo优化公司哪家好
文章目录
- 前言
- json协议的基本格式
- json 数组类型 的语法规则
- json协议报文的实例
- json常见的一些格式错误
- 在gd32中使用cjson库
- 小结
前言
json协议在互联网应用,物联网应用中都会用到。所谓工欲善其事必先利其器,我们需要学习了解json协议的具体格式,以及在某些场景中如何编写json报文。
最后,我们再学习了解在嵌入式C语言的环境中时常使用的json库-cjson
json协议的基本格式
json协议是使用了 Key-value这种键值对的 形式实现的协议。协议基本结构如下所示。
{"key1": value1,"key2": value2,"nestedObject": {"key3": value3},"array": [value4, value5]
}
注意点:
- 键名(Key):必须用双引号包裹的字符串。
- 值(Value):支持类型包括:
- 字符串(
"value"
) - 数字(
123
、3.14
) - 布尔值(
true
/false
) - 对象(
{ ... }
) - 数组(
[ ... ]
) null
- 字符串(
- value可以也是一个 json对象,如上述的
{ "key3": value3 }
- value可以是一个数组,如上述的
[value4, value5]
- 除了最后一个Key-value键值对,其他的键值对都需要在末尾加上一个逗号:
,
json协议的一个示例
{"key1": "value1","key2": "value2"
}
通过一些在线校验工具,我们可以校验自己编写的json协议报文是否正确。
笔者使用的在线建议工具:bejson.com
json 数组类型 的语法规则
- 语法要求
最后一个元素后不能有逗号。
元素之间必须严格用逗号分隔 - 元素类型:
支持任意 JSON 数据类型,包括:- 字符串(
"value"
) - 数字(
123
、3.14
) - 布尔值(
true
/false
) - 对象(
{ ... }
) - 数组(
[ ... ]
) null
- 字符串(
使用数组的示例
- 使用 简单数据类型 的数组
{"tags": ["news", "technology", "2023"],"scores": [95, 88.5, 72],"flags": [true, false, true]
}
- 使用 json对象类型 的数组
{"users": [{ "id": 1, "name": "Alice" },{ "id": 2, "name": "Bob" }]
}
- 使用 数组类型 的数组 (嵌套数组)
{"matrix": [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
}
- 使用 混合数据类型 的数组(合法但不推荐)
{"mixed_data": ["text",42,{ "key": "value" },[1, 2],null]
}
json协议报文的实例
用于用户注册的HTTP请求体
// HTTP请求体(用户注册)
{"username": "john_doe","email": "john@example.com","age": 28,"is_active": true,"hobbies": ["reading", "coding"]
}// HTTP响应(成功)
{"status": 200,"data": {"user_id": "12345","created_at": "2023-10-05T14:48:00Z"}
}// 错误响应
{"status": 400,"error": {"code": "INVALID_EMAIL","message": "Email format is invalid"}
}
json常见的一些格式错误
- 错误1:末尾多余的逗号
// ❌ 错误
"numbers": [1, 2, 3, ]
// ✅ 正确
"numbers": [1, 2, 3]
- 错误2:缺少引号(字符串元素)
// ❌ 错误
"colors": [red, green, blue]
// ✅ 正确
"colors": ["red", "green", "blue"]
- 错误3:键名未用双引号
// ❌ 错误(键名必须用双引号)
{ key: [1, 2, 3] }
// ✅ 正确
{ "key": [1, 2, 3] }
在gd32中使用cjson库
待续
小结
json的具备的优势如下
- 易读性:结构清晰,易于人类阅读和调试。
- 高效性:体积小,解析速度快(对比XML)。
- 跨平台:所有主流编程语言均提供原生或第三方解析库(如Python的json模块、Java的Jackson,C语言的cjson)。