python|Python-JSON应用json库


Python-JSON应用json库

  • JSON的含义
  • Python中的json库
  • JSON数据类型
  • JSON字符串
  • JSON库方法
    • JSON字符串转换为Python对象
      • json.load
      • json.loads
    • Python对象转换为JSON字符串
      • json.dump
      • json.dumps

JSON的含义
  • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。
  • 它独立于编程语言。
  • JSON用来存储和交换文本信息,在网络使用中,它比xml更小/更快/更易解析,易于读写。
  • 具有自我描述性,更易懂。
Python中的json库
  • Python中处理json数据的有很多库,json库较为常用。
  • 使用JSON字符串生成Python对象(load, loads方法)。
  • 由Python对象格式化为JSON字符串(dump, dumps方法)。
JSON数据类型 【python|Python-JSON应用json库】在Python中处理的是JSON字符串。JSON字符串必须用双引号括起来。
JSON的数据类型有很多,与Python互转存在一定的对应关系。
Python JSON JSON举例
dict object {“employee”:{ “name”:“Bill Gates”, “age”:62, “city”:“Seattle” }}
list,tuple array, [ “Bill”, “Steve”, “David” ]
str string “Bill”
int, long, float number 3.14
True true
False false
None null
JSON字符串
  • JSON字符串是由双引号括起来的,当由Python对象转化为JSON字符串时,它本质上还是字符串。
# import json dict1 = { "name": "Bill", "age": 35, "married": True, "children": ("Jennifer", "Rory"), "car": ["Benz", "Audi"] } print(dict1) print(json.dumps(dict1)) print("-------------------") print(json.dumps(dict1, indent=4))#按照4个空格的缩进进行格式化 print(type(json.dumps(dict1, indent=4)))result: # 可以看到在字典里,所有的字符串类型都是单引号。True首字母大写。 {'name': 'Bill', 'age': 35, 'married': True, 'children': ('Jennifer', 'Rory'), 'car': ['Benz', 'Audi']} {"name": "Bill", "age": 35, "married": true, "children": ["Jennifer", "Rory"], "car": ["Benz", "Audi"]} ------------------- { "name": "Bill", "age": 35, "married": true,# True变成了true "children": [ "Jennifer", "Rory" ], "car": [ "Benz", "Audi" ] } # 还是字符串,只不过print打印出来不带双引号,在命令行里可以看到带有双引号。

json.dumps([1, 2, 3]) result: '[1, 2, 3]'json.dumps('abc') result: '"abc"'json.dumps(True) result: 'true'

JSON库方法 JSON字符串转换为Python对象 json.load
  • json.load(fp),fp是文件对象。
  • 把一个JSON数据类型的文档内容转化为Python对象。
# data.txt中内容: # {"name": "Bill","married": true, "children": ["Jennifer", "Rory"]}import json file_name = "data.txt" msg = json.load(open(file_name)) print(type(msg), msg)result: {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}

json.loads
  • json.loads(str),str是JSON字符串。
  • 把一个JSON字符串内容转化为Python对象。
import json data = 'https://www.it610.com/article/{"name": "Bill","married": true, "children": ["Jennifer", "Rory"]}'# JSON字符串 msg = json.loads(data) print(type(msg), msg)result: {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}

import json data = 'https://www.it610.com/article/["a", "b", 2, true]' msg = json.loads(data) print(type(msg), msg)result: ['a', 'b', 2, True]

Python对象转换为JSON字符串 json.dump
  • 将Python对象转换成 JSON类型存储于文件中。
  • json.dump(fp, indent=None, separators=None, sort_keys=False)
    • fp为文件对象。
    • indent为输出格式缩进字符数。
    • separators为输出格式的指示字符。
    • sort_keys,是否按照key排序。
import json dict1 = {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']} js_str = json.dump(dict1, open("data.txt", "w"), indent=4) msg = json.load(open("data.txt", "r"))#转换为Python对象 print(msg)result: {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}

json.dumps
  • json.dumps(Python object) 用于将 Python 对象转换成 JSON 字符串。
import json list1 = [1, 2, "a", True] js_str = json.dumps(list1) print(type(js_str), js_str)result: [1, 2, "a", true]

import json dict1 = {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']} js_str = json.dumps(dict1, indent=4, separators=(':: ', '== ')) print(type(js_str), js_str)result: { "name"== "Bill":: "married"== true:: "children"== [ "Jennifer":: "Rory" ] }

    推荐阅读