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中处理的是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"
    ]
}
<class 'str'>				# 还是字符串,只不过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:
<class 'dict'> {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}

json.loads

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

result:
<class 'dict'> {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}
import json
data = '["a", "b", 2, true]'
msg = json.loads(data)
print(type(msg), msg)

result:
<class 'list'> ['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:
<class 'str'> [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:
<class 'str'> {
    "name"== "Bill":: 
    "married"== true:: 
    "children"== [
        "Jennifer":: 
        "Rory"
    ]
}

你可能感兴趣的:(python,python,json,开发语言)