如何使用Python处理JSON数据

青灯夜游
发布: 2018-11-14 14:37:50
原创
3590人浏览过

如何使用python处理json数据?本篇文章就给大家介绍使用python处理json数据的基本方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

在介绍使用Python处理JSON数据的基本方法之前,我们首先要了解一下什么是JSON?

JSON代表“JavaScript Object Notation”,可以说是“基于JavaScript语言符号的数据格式”。但是,该表示法仅基于JavaScript,可用于其他各种语言。

JSON是我们存储和交换数据的一种方式,它通过其语法实现,并在许多Web应用程序中使用。JSON的优点在于它具有人类可读的格式,这可能是在数据传输中使用它的原因之一,此外还有使用API时的有效性。

在JSON中,数据以名称/值(name/value)对表示;大括号内存储对象,每个名称后跟':'(冒号),名称/值对之间要用(逗号)分隔;方括号包含数组,值以(逗号)分隔。

立即学习Python免费学习笔记(深入)”;

JSON格式数据的示例:

{
 "book1":{
"title": "Python Beginners",
 "year": 2005 ,
"page": 399
},
"book2":{
 "title": "Python Developers",
 "year": 2006 ,
"page": 650
 }
}
登录后复制

下面我们来详细了解一下在Python中如何处理JSON数据。

Python使得处理JSON数据变得简单。实现此目的的模块是json模块。该模块应该包含在Python(内置)安装中,因此你不需要像使用PDF和Excel文件那样安装任何外部模块。要使用此模块,你唯一需要的是导入它(开头写入):

import json
登录后复制

但是,JSON库是做什么的呢?此库主要从文件或字符串解析JSON。它还将JSON解析为Python中的字典或列表,反之亦然,即将Python字典或列表转换为JSON字符串。

读取JSON(JSON转Python)

读JSON意味着将JSON转换为Python值(对象)。如上所述,json库将JSON解析为Python中的字典或列表。为此,我们使用loads()函数(从字符串加载),如下所示:

import json
jsonData = '{"name": "Frank", "age": 39}'
jsonToPython = json.loads(jsonData)
登录后复制

如果要查看输出,请执行 print jsonToPython,在这种情况下,你将获得以下输出:

{'age': 39, 'name': 'Frank'}
登录后复制

也就是说,数据作为Python字典(JSON对象数据结构)返回。

Python转JSON

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

上一节我们介绍了JSON转Python,这一节我们将向你展示如何将Python值转换(编码)为JSON。

假设我们在Python中有以下字典:

import json
pythonDictionary = {'name':'Bob', 'age':44, 'isEmployed':True}
dictionaryToJson = json.dumps(pythonDictionary)
登录后复制

如果我们运行 print dictionaryToJson,我们得到以下JSON数据:

{"age": 44, "isEmployed": true, "name": "Bob"}
登录后复制

因此,此输出被视为对象(Dictionary)的数据表示。该方法dumps()是此类操作的关键。

此时需要注意的是,JSON不能存储所有类型的Python对象,只能存储以下类型:列表; 字典; 布尔值; 数; 字符串; 没有。因此,需要转换任何其他类型以便存储在JSON中。

假设我们有以下课程:

class Employee(object):
    def __init__(self, name):
        self.name = name
登录后复制

假设我们创建了一个新对象abder,如下所示:

abder = Employee('Abder')
登录后复制

如果我们想将此对象转换为JSON,该怎么办?那是json.dumps(abder)?在这种情况下,你将收到类似于以下内容的错误:

Traceback (most recent call last):
  File "test.py", line 8, in <module>
    abderJson = json.dumps(abder)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
    return _default_encoder.encode(obj)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <__main__.Employee object at 0x10e74b750> is not JSON serializable
登录后复制

但是,有解决方法吗?幸运的是有。要解决此问题,我们可以定义类似于以下的方法:

def jsonDefault(object):
    return object.__dict__
登录后复制

然后将对象编码为JSON,如下所示:

jsonAbder = json.dumps(abder, default=jsonDefault)
登录后复制

如果你运行 print jsonAbder,你应该得到以下输出:

{"name": "Abder"}
登录后复制

我们现在已经将Python对象(abder)编码为JSON。

以上就是如何使用Python处理JSON数据的详细内容,更多请关注php中文网其它相关文章!

相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号