个性化阅读
专注于IT技术分析

Python中的JSON数据处理

JSON(JavaScript对象表示法)是一种轻量级的数据交换格式, 人类易于读写。计算机也很容易解析和生成。 JSON基于JavaScript编程语言。它是一种独立于语言的文本格式, 可以在Python, Perl等其他语言中使用。它主要用于在服务器和Web应用程序之间传输数据。 JSON建立在两种结构上:

  • 名称/值对的集合。这可以实现为对象, 记录, 字典, 哈希表, 键列表或关联数组。
  • 值的有序列表。这可以实现为数组, 向量, 列表或序列。

Python中的JSON

有一些在Python中支持JSON的软件包, 例如metamagic.json, jyson, simplejson, Yajl-Py, ultrajson和json。在本教程中, 我们将使用Python本身支持的json。我们可以使用提供JSON linter的此站点来验证我们的JSON数据。

以下是JSON数据的示例。我们注意到数据表示非常类似于Python字典。

{
   "article": [

      {
         "id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
      }, {
         "id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
      }
   ], "blog":[
   {
       "name": "srcmini", "URL":"srcmini02.com"
   }
   ]
}

将JSON转换为Python对象

我们可以使用json模块中的json.loads()方法解析上述JSON字符串。结果是一个Python字典。

import json
my_json_string = """{
   "article": [

      {
         "id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
      }, {
         "id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
      }
   ], "blog":[
   {
       "name": "srcmini", "URL":"srcmini02.com"
   }
   ]
}
"""
to_python = json.loads(my_json_string)
to_python['blog']
[{'URL': 'srcmini02.com', 'name': 'srcmini'}]

将Python对象转换为JSON

使用json.dumps(), 我们可以将Python对象转换为JSON。

blog = {'URL': 'srcmini02.com', 'name': 'srcmini'}
to_json= json.dumps(blog)
to_json
'{"URL": "srcmini02.com", "name": "srcmini"}'

让我们比较一下Python和JSON中的数据类型。

Python JSON
dict Object
list Array
tuple Array
str String
int Number
float Number
True true
False false
None null

下面我们将展示如何将各种Python对象转换为不同的JSON数据类型。

Python元组到JSON数组

tuple_example = 'Mango', 'Banana', 'Apple';
print(json.dumps(tuple_example));
["Mango", "Banana", "Apple"]

Python列表到JSON数组

list_example = ["Mango", 1, 3, 6, "Oranges"];
print(json.dumps(list_example));
["Mango", 1, 3, 6, "Oranges"]

Python字符串到JSON字符串

string_example = "This is a cool example."
print(json.dumps(string_example))
"This is a cool example."

Python布尔值到JSON布尔值

boolean_value = False
print(json.dumps(boolean_value))
false

编写JSON文件

json模块还允许我们将JSON数据写入JSON文件。 JSON文件以.json扩展名保存。让我们看看下面如何做到这一点。为了实现这一点, 我们使用Python的open()函数, 将w作为参数来表示我们要写入文件。

my_json_string = """{
   "article": [

      {
         "id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
      }, {
         "id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
      }
   ], "blog":[
   {
       "name": "srcmini", "URL":"srcmini02.com"
   }
   ]
}
"""
with open('test_file.json', 'w') as file:
    json.dump(my_json_string, file)

读取JSON文件

现在, 让我们展示如何读取刚刚创建的JSON文件。我们使用json.load加载文件。

with open('test_file.json', 'r') as j:
    json_data = json.load(j)
    print(json_data)
{
   "article": [

      {
         "id":"01", "language": "JSON", "edition": "first", "author": "Derrick Mwiti"
      }, {
         "id":"02", "language": "Python", "edition": "second", "author": "Derrick Mwiti"
      }
   ], "blog":[
   {
       "name": "srcmini", "URL":"srcmini02.com"
   }
   ]
}

json.load与json.loads

加载文件时使用json.load, 而加载字符串时使用json.loads(load string)。

json.dump与json.dumps

要将JSON转储到文件中时, 请使用json.dump。当我们需要JSON数据作为解析或打印的字符串时, 将使用json.dumps(dump string)。

在数据科学中处理JSON数据

有时, 我们在数据科学活动中需要加载JSON格式的数据。熊猫提供了.read_json, 使我们能够做到这一点。加载数据后, 我们使用pandas.DataFrame属性将其转换为数据框。

import pandas as pd
data = pd.read_json("https://api.github.com/users")
df = pd.DataFrame(data)
df

实施局限性

编码JSON的过程称为序列化, 而解码JSON的过程称为反序列化。某些JSON解串器实现可能会在以下方面设置限制:

  • 可接受的JSON文本的大小
  • JSON对象和数组的最大嵌套级别
  • JSON编号的范围和精度
  • JSON字符串的内容和最大长度

但是, 此类限制仅与Python数据类型和Python解释器本身相关。

API中的JSON

JSON的主要应用之一是在Web应用程序中构建API。这非常有用, 因为它允许其他开发人员使用支持JSON的任何语言在我们的API之上构建。大多数现代编程语言都支持JSON。我们将展示一个简单的示例, 说明如何在Python中构建Flask应用程序时如何返回JSON。 Flask提供了jsonify模块, 使我们能够实现这一目标。

from flask import jsonify

@app.route('/_get_current_user')
def get_current_user():
    return jsonify(username=g.user.username, email=g.user.email, id=g.user.id)

这将向浏览器发送类似于以下所示的JSON响应。

{
    "username": "Derrick Mwiti", "email": "myemail@gmail.com", "id": 1
}
{'email': 'myemail@gmail.com', 'id': 1, 'username': 'Derrick Mwiti'}

总结

在本教程中, 我们已经对Python中的JSON进行了介绍。我们已经介绍了JSON模块提供的各种方法, 例如json.load和json.dumps。我们还看到了我们可以在数据科学项目中加载JSON数据, 以及如何在构建API时返回JSON数据。你可以通过访问Python网站的官方页面来了解有关JSON模块的更多信息。

如果你想了解有关Python的更多信息, 请参加srcmini的Python数据库入门课程。

赞(0)
未经允许不得转载:srcmini » Python中的JSON数据处理

评论 抢沙发

评论前必须登录!