干货|Python处理JSON格式的数据,太详细了吧!

工作中我们常把数据存放在数据库中,使用Python、SQL语句就可以方便地数据获取。在互联网公司,当我们需要其他团队提供数据支持时,一般没有团队会直接给你一个数据库或者数据表的权限,道理很简单,一是数据安全性,二是增加自身工作量。通常情况下,提供一个数据接口,数据格式为JSON。

本篇将对数据接口为JSON格式时,如何进行数据处理进行详细的介绍,内容分如下两个部分:

  • 什么是JSON
  • JSON使用方法
什么是JSON

JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在JS语言中,一切都是对象。因此,任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
JSON使用方法

1.为了方便学习,我这边注册了一个百度天气的api接口,获取JSON格式的数据

import requests
url ='http://api.map.baidu.com/telematics/v3/weather?location=shanghai&output=json&ak=3p49MVra6urFRGOT9s8UWr2'
r = requests.get(url)
#json格式
json_response = r.content.decode()

参数output=json,ak是注册后得到的,使用get方法获取。结果输出展示:
在这里插入图片描述
2.python处理json格式模块有json和picle

  • json模块提供了四个方法:dumps、dump、loads、load;
  • pickle模块也提供了四个功能:dumps、dump、loads、load;
  • 序列化:将python的值转换为json格式的字符串;
  • 反序列化:将json格式的字符串转换成python的数据类型;

3.json与字典相互转换

  • json.dumps用于将 Python 对象编码成JSON字符串。
  • json.loads将已编码的 JSON 字符串解码为Python 对象
import urllib.request
import http.client
import json
#json 转字典
dict_json = json.loads(json_response)
print(dict_json)
print('---------------------------')
# 将字典转换成json字符串
str_json =json.dumps(dict_json)
print(str_json)

下图中(上为字典格式、下是json格式)
在这里插入图片描述
在这里插入图片描述
说明:json是字符串,在输出展示方面与字典是不同的,为双引号

4.序列化

下面列举了数据处理中常用的7种类型的序列化与反序列化,如果你有别的处理方式,欢迎在留言区留言。

#1)字典序列化:
import json
dic={
    
    "name":"mcw","age":18}
xu=json.dumps(dic)
print(xu,type(xu),type(dic))

print('------------1---------------')

#2)列表序列化与反序列化:
import json
li=[1,2]
xu=json.dumps(li)
print(xu,type(xu),type(li))
fx=json.loads(xu)
print(fx,type(fx))
print('-------------2--------------')

#3)字符串序列化与反序列化:
import json
mcwstr="xiaoma"
xu=json.dumps(mcwstr)
print(xu,type(xu),type(mcwstr))
fx=json.loads(xu)
print(fx,type(fx))
print('------------3---------------')

#4)整型序列化与反序列化
import json
mcwint=2
xu=json.dumps(mcwint)
print(xu,type(xu),type(mcwint))
fx=json.loads(xu)
print(fx,type(fx))

print('------------4---------------')
#5)浮点型序列化与反序列化
import json
mcwfloat=2.03
xu=json.dumps(mcwfloat)
print(xu,type(xu),type(mcwfloat))
fx=json.loads(xu)
print(fx,type(fx))
print('--------------5-------------')

#6)布尔型序列化与反序列化:
import json
mcwbool=True
xu=json.dumps(mcwbool)
print(xu,type(xu),type(mcwbool))
fx=json.loads(xu)
print(fx,type(fx))

print('--------------6-------------')

#7)None序列化与反序列化
import json
mcwnone=None
xu=json.dumps(mcwnone)
print(xu,type(xu),type(mcwnone))
fx=json.loads(xu)
print(fx,type(fx))

结果输出

{
    
    "name": "mcw", "age": 18} <class 'str'> <class 'dict'>
------------1---------------
[1, 2] <class 'str'> <class 'list'>
[1, 2] <class 'list'>
-------------2--------------
"xiaoma" <class 'str'> <class 'str'>
xiaoma <class 'str'>
------------3---------------
2 <class 'str'> <class 'int'>
2 <class 'int'>
------------4---------------
2.03 <class 'str'> <class 'float'>
2.03 <class 'float'>
--------------5-------------
true <class 'str'> <class 'bool'>
True <class 'bool'>
--------------6-------------
null <class 'str'> <class 'NoneType'>
None <class 'NoneType'>
更多精彩内容,关注微信公众号『Python学习与数据挖掘』

为方便技术交流,本号开通了技术交流群,有问题请添加小助手微信号:connect_we,备注:CSDN,欢迎转载,收藏,码字不易,喜欢文章就点赞一下!谢啦
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38037405/article/details/107075666