第7课:Json字符串处理

105 阅读2分钟

1.什么是json字符串

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。更多解释请见:baike.baidu.com/item/JSON/2…

JSON支持数据格式:

  • 对象(字典):使用花括号。
  • 数组(列表):使用方括号。
  • 字符串类型:字符串必须要用双引号,不能用单引号)。
  • 整形、浮点型、布尔类型还有null类型。
  • 多个数据之间使用逗号分开。

注意,json本质上是一个字符串

2.python对象转换为Json字符串

dumps:把Python对象转换成JSON格式的字符串。

dump:把Python对象转换成JSON格式的字符串,并且还可以接收一个文件指针fp参数,可以写入到文件中。

这两个方法都有一个`ensure_ascii`参数,默认情况下这个参数的值是True,也就是说转换后的JSON字符串是只能存储ascii格式的,不能存储中文,如果想要存储成中文,那么可以将他设置为False。

代码示例

import json

# python对象
persons = [    {        'name':'zhangsan',        "age": 18    },    {        "name":"lisi",        "age": 16    },    {        "name": "wangwu",        "age": 16    }]
# dumps
my_json = json.dumps(persons, ensure_ascii=False)
# [{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 16}, {"name": "wangwu", "age": 16}]
print(my_json)

# dump
fq = open("myJson.json", "w+", encoding='utf-8')
# myJson.json文件里面写入的:[{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 16}, {"name": "wangwu", "age": 16}]
json.dump(persons, fq, ensure_ascii=False)
fq.close()

3.## 将JSON字符串load成Python对象

loads:将JSON字符串转换成Python对象。

load:将JSON字符串转换成Python对象,并且是直接从文件中获取JSON字符串。

代码示例

import json

# loads
my_json = '[{"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 16}, {"name": "wangwu", "age": 16}]'
result = json.loads(my_json)
# [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 16}, {'name': 'wangwu', 'age': 16}]是个列表
print(result)

# load
with open("myJson.json", 'r', encoding='utf-8') as fp:
    result = json.load(fp)
    # [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 16}, {'name': 'wangwu', 'age': 16}]
    print(result)