JSON的诞生,源于XML在HTML中的实现细节不统一,道格拉斯·克罗克福特(Douglas Crockford)和奇普·莫宁斯达(Chip Morningstar)为了解决这一问题,从JavaScript的数据类型中提取了一个子集,命名为“JavaScript Object Notation”,即JSON。JSON的格式简洁,易于阅读和编写,同时解决了不同浏览器之间解析数据格式的兼容性问题。
JSON格式
JSON有两种主要的形式:键值对形式和数组形式。键值对形式常用于表示对象,而数组形式则用于表示值的有序集合。这两种形式的JSON数据都遵循一定的规则,例如键值对必须使用冒号":"分隔,键名和字符串值必须使用双引号,而不同键值对之间则使用逗号","分隔。
JSON的6种数据类型
JSON的值可以是六种数据类型:string(字符串)、number(数字)、object(对象)、array(数组)、true/false(布尔值)以及null。这些数据类型与JavaScript中的数据类型有对应关系。
JSON的使用场景
JSON因其简洁明了和易于解析的特点,被广泛应用于Web开发中。例如,API接口返回的数据通常都是JSON格式。JSON还常用于保存和传输数据,如序列化对象以保存到文件中或在网络中传输。
以接口返回数据为例,JSON格式的数据常装在特定的键值对中,如“code”表示状态码,“msg”表示消息,“data”则包含具体的数据信息。这种格式的API接口文档会说明入参和出参的格式,方便开发者使用。
JSON也被用于Token的生成与验证,如JWT(JSON Web Tokens)。通过Token的方式,可以实现用户登录状态的校验和单点登录等功能。
JSON在Python中的使用
在Python中,操作JSON需要引入json标准库。Python类型与JSON相互转换时,可以使用json.dump和json.loads方法。其中,json.dump用于将Python类型转换为JSON字符串(或写入文件),而json.loads则用于将JSON字符串转换为Python类型。在进行转换时,需要注意JSON的键名和字符串都必须使用双引号引起来。
当Python对象转为JSON时,如果对象包含自定义属性,需要提供一个默认的函数来获取对象所有属性的字典形式。而对于JSON转回Python对象时,同样需要提供相应的处理方法来正确解析JSON中的数据。
值得注意的是,Python 3中的json在做dumps操作时,会将中文转换成unicode编码并以16进制方式存储,而非UTF-8格式。这一点在使用过程中需要注意。
总结
通过本文的学习,我们了解了JSON的诞生原因、两种结构形式、六种数据类型以及其使用场景和注意事项。我们还学习了如何在Python中操作JSON,包括类型转换和自定义对象的处理等。JSON作为一种轻量级的数据交换格式,在Web开发、数据传输和序列化等方面都有着广泛的应用。掌握JSON的使用对于任何一名开发者来说都是必不可少的。