如何使用Python处理JSON数据


本文摘自php中文网,作者青灯夜游,侵删。

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

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

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

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

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

JSON格式数据的示例:

1

2

3

4

5

6

7

8

9

10

11

12

{

 "book1":{

"title": "Python Beginners",

 "year": 2005 ,

"page": 399

},

"book2":{

 "title": "Python Developers",

 "year": 2006 ,

"page": 650

 }

}

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

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

1

import json

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

读取JSON(JSON转Python)

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

1

2

3

import json

jsonData = '{"name": "Frank", "age": 39}'

jsonToPython = json.loads(jsonData)

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

1

{'age': 39, 'name': 'Frank'}

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

Python转JSON

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

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

1

2

3

import json

pythonDictionary = {'name':'Bob', 'age':44, 'isEmployed':True}

dictionaryToJson = json.dumps(pythonDictionary)

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

1

{"age": 44, "isEmployed": true, "name": "Bob"}

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

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

假设我们有以下课程:

1

2

3

class Employee(object):

    def __init__(self, name):

        self.name = name

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

1

abder = Employee('Abder')

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

1

2

3

4

5

6

7

8

9

10

11

12

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

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

1

2

def jsonDefault(object):

    return object.__dict__

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

1

jsonAbder = json.dumps(abder, default=jsonDefault)

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

1

{"name": "Abder"}

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

以上就是如何使用Python处理JSON数据的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python如何实现自动访问网页功能

Python模块和类区别

request库爬虫是什么?如何使用?(实例讲解)

Python input怎么用

Python xlsxwriter模块创建aexcel表格

Python中常见数据库有哪些

Python图片转字符画代码是什么

Python flask是什么

怎么获得一个字符串的子串

Python函数基础入门

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...