JSON数据

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但JSON是独立于语言的,很多编程语言都支持JSON格式的数据的生成和解析。

JSON的特点包括:

  • 文本格式: JSON是纯文本,可以被任何编程语言读取和生成。
  • 结构简单: 使用键值对存储数据,结构清晰,易于理解。
  • 易于解析: 大多数编程语言都有现成的库来解析JSON数据,将其转换为本地对象。
  • 易于传输: 由于是文本格式,JSON数据可以很容易地通过HTTP等协议传输。
  • 语言无关: 虽然JSON源自JavaScript,但它是独立于语言的,几乎所有的现代编程语言都支持JSON。

JSON数据的基本类型包括:

  • 字符串: 用双引号括起来的文本。
  • 数字: 没有引号的数值。
  • 布尔值: TrueFalse
  • 数组: 用方括号括起来的值序列,例如["apple", "banana", "cherry"]
  • 对象: 用大括号括起来的键值对集合,例如{"name": "Lilian", "age": 21}
  • null: 表示空值。

JSON对象示例:

{
    "name": "Lilian",
    "age": 21,
    "isEmployed": False,
    "skills": ["math", "music", "web crawler"],
    "address": {
        "street": "Num.360, JinNiu District",
        "city": "CD",
        "province": "SC"
    }
}

python中有自带的json标准库能处理json数据,提供的基本功能有:

  1. 序列化(编码): 将python对象转换为JSON格式的字符串。
    1. json.dumps(obj): 将python对象obj转换成json字符串。
    2. json.dump(obj): 将python对象obj转换为json字符串并写入到文件中。
  2. 反序列化(解码): 将JSON格式的字符串转换回python对象。
    1. json.loads(json_str): 将JSON字符串json_str转换为python对象。
    2. json.load(file): 从文件读取JSON字符串并将其转换为python对象。

示例代码:

import json


# python中JSON对象会被解析成字典格式,数组被解析为列表,字符串解析为字符串str,数字解析为整数int或浮点数float,布尔值解析为布尔值,null解析为None
# 字符串中的key需要加上双引号,不能用单引号
str_ = '{"name": "战狼3"}'
print(type(str_))  # <class 'str'>
print('--------str to obj---------')
obj = json.loads(str_)
print(type(obj))  # <class 'dict'>


print('--------obj to str---------')
tmp_str = json.dumps(obj, ensure_ascii=False)
print(tmp_str)  # {"name": "战狼3"}
print(type(tmp_str))  # <class 'str'>


print('---------obj to file---------')
json.dump(obj, open('json.txt', 'w', encoding='utf8'), ensure_ascii=False)


print('---------file to obj---------')
obj2 = json.load(open('json.txt', 'r', encoding='utf8'))
print(obj2)  # {"name": "战狼3"}
print(type(obj2))  # <class 'dict'>

除了基本功能,json还支持自定义编码器和解码器来处理特定类型的转换,JSONDecoder类用于自定义解码JSON数据,JSONEncoder类用于自定义编码python对象到JSON数据。

还提供了异常处理机制: json.JSONDecodeError。

详细信息查看python官网:https://docs.python.org/3.12/library/json.html#basic-usage

json在线解析网站:http://www.json.cn/#

posted @ 2024-10-03 15:47  松鼠q  阅读(36)  评论(0编辑  收藏  举报