Python-JSON应用json库

发布时间:2023-08-09 08:00

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\"
    ]
}

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号