首页 > 技术文章 > Python处理json总结

p1967914901 2020-07-20 22:04 原文

Python处理json总结

JSON:JavaScript Object Notation 【JavaScript 对象表示法】

JSON 是一种轻量级的数据交换格式,完全独立于任何程序语言的文本格式。一般,后台应用程序将响应数据封装成JSON格式返回。

JSON的基本语法如下

JSON名称/值对。JSON 数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),然后着是一个冒号( : ),最后是值。

JSON最常用的格式是对象的键值对

key只能是string, value可以是 object、array、string、number、true/false、null

{
    "sites": [{
            "name": "360",
            "url": "www.360.com"
        },
        {
            "name": "google",
            "url": "www.google.com"
        },
        {
            "name": "baidu",
            "url": "www.baidu.com"
        }
    ]
}
  • 键通过双引号包裹,后面跟冒号“:”,然后跟该键的值;

  • 值可以是字符串、数字、数组等数据类型;

  • 对象与对象之间用逗号隔开;

  • “{}”用来保存对象;

  • “[]”用来保存数组;

json跟python中的字典的区别

  • json的key只能是字符串,dict的key可以是任何可hash的对象,例如:字符串、数字、元组等;

  • 字典是一种数据结构,json是一种数据格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性;

  • json的字符串强制用双引号,dict的字符串可以用单引号、双引号;

一般而言,我们会把json转化为python中的字典或者列表,再对其进行操作。

Python处理json的模块:json

Pythone3的标准库JSON模块,可以很方便的帮我们进行json数据的转换和处理,这里主要指序列化(json.dumps()、json.dump())和反序列化(json.loads()、json.load())。

序列化和反序列化

将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML、JSON或特定格式的字节串)的过程称为序列化;反之,则称为反序列化。

常用的JSON模块方法

  • json.dumps():将Python中的对象转换为JSON中的字符串对象

  • json.dump():将python对象转换成JSON字符串输出到fp流中。

  • json.loads():将JSON中的字符串对象转换为Python中的对象。

  • json.load():读取包含json对象的文件。

带s的都是和字符串相关的,不带s的都是和文件相关的。

1

实例

把字典转换成json串

import json
dic = {'name': 'xiaoming', 'age': 29}
json_str = json.dumps(dic)#返回json字符串
print(json_str)
print(type(json_str))
'''
输出:
{"name": "xiaoming", "age": 29}
<class 'str'>
'''

Python解码JSON对象

import json
json_str ='{"id":"09", "name": "Nitin", "department":"Finance"}'
# 将字符串转换为Python dict
dict = json.loads(json_str)
print(dict)
#转换成字典来后,要访问其中的值,可以使用字典的key来访问
print(dict['id'])
'''
输出:
{'id': '09', 'name': 'Nitin', 'department': 'Finance'}
09
'''

读取json文件

import json
with open('test.json') as f:
    a = json.load(f)
print(a)
print(type(a))
'''
输出:
{'sites': [{'name': '360', 'url': 'www.360.com'}, {'name': 'google', 'url': 'www.google.com'}, {'name': 'baidu', 'url': 'www.baidu.com'}]}
<class 'dict'>
'''

写入json文件

import json
dic = {
    "name": "xiaoming",
    "age": 20,
    "phonenumber": "15555555555"
}

with open("test.json", "w") as outfile:
    json.dump(dic, outfile)

1

Python类型转换JSON类型的对应关系

PythonJSON
dictobject
list, tuplearray
str, unicodestring
int,long, floatnumber
Truetrue
Falsefalse
Nonenull

json类型转换到Python的类型对照表

JSONPython
objectdict
arraylist
stringunicode
number (int)int, long
number(real)float
trueTrue
falseFalse
nullNone

推荐阅读