广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用python如何提取JSON数据指定内容
  • 284
分享到

使用python如何提取JSON数据指定内容

2024-04-02 19:04:59 284人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录如何提取JSON数据指定内容假设我们要获取'pic_str'里的数据1、jsON数据为字符串类型2、JSON数据为字典类型如何提取复杂JSON的数据 例

如何提取JSON数据指定内容

假设我们要获取'pic_str'里的数据

JSON数据

{'err_no': 0, 'err_str': 'OK', 'pic_id': '1169213517976400008', 'pic_str': 'xoet', 'md5': 'ca9bc4fda521498d2b3aba5dbb4ee4ac'}

1、JSON数据为字符串类型

import json
 
str = "{'err_no': 0, 'err_str': 'OK', 'pic_id': '1169213517976400008', 'pic_str': 'xoet', 'md5': 'ca9bc4fda521498d2b3aba5dbb4ee4ac'}"
json_str = str.replace("'",'"')
# json.loads() ,要求json串格式中必须的双引号!!转换为字典
json_dict = json.loads(dict2)
print(json_dict['pic_str'])
>> xoet

2、JSON数据为字典类型

import json
 
json_dict = {'err_no': 0,'err_str': 'OK', 'pic_id': '1169213517976400008', 'pic_str': 'xoet', 'md5': 'ca9bc4fda521498d2b3aba5dbb4ee4ac'}
# 方法一
print(json_dict['pic_str'])
# 或者使用 print(json_dict.get('pic_str'))
 
# 方法二:遍历
for pic in json_dict['pic_str'}:
    print(pic)

如何提取复杂JSON的数据 

在越来越多的项目中,基本都用了 json 作为接口数据返回的格式。json 给我们的感觉就是通俗易懂,只是即使再复杂的结构也会比其他格式容易看。然而一旦在调试或者测试中需要用到提取某一部分字段数据进行解析并校验的话,就没那么容易了。这篇文章使用 python 简单地获取到复杂 json 数据中的字段信息。

例子

如果有一个接口返回的 json 信息如下:

{
  "familyName": "thinker family",
  "homeTown": "广东省",
  "fORMed": 2016,
  "secretBase": "Super city",
  "active": true,
  "familyMembers": [
    {
      "name": "Jobs",
      "age": 35,
      "secretIdentity": "1992238132345",
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name": "James",
      "age": 37,
      "secretIdentity": "8839394098124",
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }
  ]
}

这里就包含了对象,以及列表数据。对象中也包含列表数据。这应该是最基本的企业接口 json 格式了。

假如你要提取 json 中的 name 信息,最简单的方式就是

member = [ members.get('name') for members in data.get('familyMembers') ]

如果是要连续拿其他的信息,那么就需要换其他中获取方式,其实这种是比较麻烦的一种方法。

解决方法

extract_element_from_json(data, ["familyMembers", "name"])
>> ['Jobs', 'James']

此函数根据 path 中指定的键嵌套到obj中的记录中以检索所需的信息。当遇到一个列表作为 path 中键的值时,此函数会拆分并以深度优先的方式继续嵌套在遇到的列表的每个元素上。这就是返回 ['Jobs', 'James'] 的方式;因为 familyMembers 的值是一个列表,所以嵌套在它的两个元素上被拆分,并且 name 的每个值都附加到输出列表中。

如果 obj 是单个字典/ json,则此函数返回包含所需信息的列表,如果 obj 是字典/ json 列表,则此函数返回包含所需信息的双重列表。

如果嵌套字典/ json 的相应级别缺少 path 的元素,则此函数返回 [None]。

完整代码如下: 

def extract_element_from_json(obj, path):
    '''
    输入关键字,就可以将关键字的值信息存放在列表中并输出
    如果关键字是对象名,则返回的对象字典信息到列表中
    如果关键字是列表名,则返回的列表信息到列表中(返回双重列表)
    '''
    def extract(obj, path, ind, arr):
    	'''
    	从一个嵌套的字典中提取一个元素,并返回到列表中。
        params: obj - dict - 输入字典
        params: path - list - 构成JSON路径的字符串列表
        params: ind - int - 起始索引
        params: arr - 列表 - 输出列表
    	'''
        key = path[ind]
        if ind + 1 < len(path):
            if isinstance(obj, dict):
                if key in obj.keys():
                    extract(obj.get(key), path, ind + 1, arr)
                else:
                    arr.append(None)
            elif isinstance(obj, list):
                if not obj:
                    arr.append(None)
                else:
                    for item in obj:
                        extract(item, path, ind, arr)
            else:
                arr.append(None)
        if ind + 1 == len(path):
            if isinstance(obj, list):
                if not obj:
                    arr.append(None)
                else:
                    for item in obj:
                        arr.append(item.get(key, None))
            elif isinstance(obj, dict):
                arr.append(obj.get(key, None))
            else:
                arr.append(None)
        return arr
    if isinstance(obj, dict):
        return extract(obj, path, 0, [])
    elif isinstance(obj, list):
        outer_arr = []
        for item in obj:
            outer_arr.append(extract(item, path, 0, []))
        return outer_arr

这段代码可以直接复制使用。

其中使用方法很简单如下:

extract_element_from_json(data, ["familyMembers", "name"])

api 提取元素

import requests
url = "Http://ip-api.com/json"
response = requests.request("GET", url)
data = response.json()
extract_element_from_json(data, ["status"])

就是这么简单地使用了。

应用场景

通过这样的方式可以在什么场景下使用呢?

  • 接口重构,需要校验接口中的部分字段数据
  • 接口新增字段,只针对新增的字段进行提取校验
  • 需要提取某一部分字段进行数据传递

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用python如何提取JSON数据指定内容

本文链接: https://www.lsjlt.com/news/119169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用python如何提取JSON数据指定内容
    目录如何提取JSON数据指定内容假设我们要获取'pic_str'里的数据1、JSON数据为字符串类型2、JSON数据为字典类型如何提取复杂JSON的数据 例...
    99+
    2022-11-11
  • 怎么使用python提取JSON数据指定内容
    本篇内容介绍了“怎么使用python提取JSON数据指定内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python提取JSON数据指定内...
    99+
    2023-07-02
  • python如何提取xml指定内容
    目录第一种方法:python操作xml文件提取某个单个字段批量提取某个标签值,并将其写入文本第二种:正则提取xml指定内容方法总结第一种方法:python操作xml文件 随手找了一个...
    99+
    2023-01-03
    python提取xml内容 python提取内容 提取xml指定内容
  • python如何提取文本指定内容
    要提取文本中的指定内容,你可以使用正则表达式或字符串方法来实现。下面是使用正则表达式提取指定内容的示例代码:pythonimport...
    99+
    2023-10-18
    python
  • python如何提取字符串指定内容
    要提取字符串中的指定内容,可以使用字符串的切片操作或正则表达式。1. 使用切片操作:可以使用字符串的索引和切片操作来提取指定内容。例...
    99+
    2023-08-20
    python
  • python如何读取json文件指定数据
    在Python中,可以使用`json`模块来读取和处理JSON文件。下面是一个示例代码,展示了如何读取JSON文件中的指定数据:``...
    99+
    2023-09-04
    python json
  • 如何用Python获取网页指定内容
    这篇文章主要介绍“如何用Python获取网页指定内容”,在日常操作中,相信很多人在如何用Python获取网页指定内容问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Python获取网页指定内容”的疑惑有所...
    99+
    2023-06-29
  • python如何获取网页指定内容
    要获取网页中的指定内容,可以使用Python的requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。以下是一个示例代码,用于获取网页中的标题:```pythonimport requestsfrom...
    99+
    2023-08-11
    python
  • 如何使用hadoop来提取文件中的指定内容
    这篇文章将为大家详细讲解有关如何使用hadoop来提取文件中的指定内容,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、需求把以下txt中含“baidu”字符串的链接输出到一个文件,否则输出到另外一个文件...
    99+
    2023-06-15
  • Python如何提取PDF指定内容并生成新文件
    小编给大家分享一下Python如何提取PDF指定内容并生成新文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!01需求描述数据是一份有286页的上市公司公开年报P...
    99+
    2023-06-15
  • python如何提取指定行和列的数据
    在Python中,你可以使用numpy库来提取指定行和列的数据。假设你有一个2维数组data,你想要提取第2行和第3列的数据,可以使...
    99+
    2023-08-23
    python
  • python 根据正则表达式提取指定的内容实例详解
    python 根据正则表达式提取指定的内容 正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事。 下面演示了在python里,通过正则表达式来提取符合要求的内容。 实例代码: i...
    99+
    2022-06-04
    详解 实例 内容
  • Python如何获取指定开头指定结尾所夹中间内容
    本篇内容介绍了“Python如何获取指定开头指定结尾所夹中间内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求获取文章中指定开头、指定结...
    99+
    2023-07-05
  • Python如何提取csv数据并筛选指定条件数据
    本篇文章给大家带来了关于Python的相关知识,在学习python过程中常遇到一种情况,要读取.csv文件的数据,然后取出其中某个字段,下面给大家介绍了关于Python如何提取csv数据并筛选指定条件数据,希望对大家有帮助。【相关推荐:Py...
    99+
    2022-08-22
    python
  • 教你怎么使用hadoop来提取文件中的指定内容
    目录一、需求二、步骤三、结果一、需求 把以下txt中含“baidu”字符串的链接输出到一个文件,否则输出到另外一个文件。 二、步骤 1.LogMapper.java pa...
    99+
    2022-11-12
  • 如何指定使用python内置函数
    在python中使用指定内置函数的方法max()作用:返回可迭代对象中的元素中的最大值或者所有参数的最大值。用法:>>> max(1,2,3) # 传入3个参数 取3个中较大者3>>> max('1234') # 传入1个可迭代对象,取其最...
    99+
    2022-10-25
  • Python如何提取csv数据并筛选指定条件数据详解
    目录前言一、使用pandas和numpy库二、使用步骤1.引入库2.读入数据3.转化格式4.处理数据总结前言 本文主要介绍通过Python提取csv文件中数据,并对数据进行处理。 编...
    99+
    2022-11-11
  • python如何通过正则匹配指定字符开头与结束提取中间内容
    目录一、提取包含始末字符二、不包含始末字符串三、.*和.+正则提取的区别四、起始有无^的区别五、pandas对具体列的内容通过正则表达式进行数据提取六、遇到的报错参考文章:一、提取包...
    99+
    2023-02-20
    python正则匹配提取中间内容 python正则匹配字符开头 python正则匹配
  • 如何使用json提取器一次性提取多个参数值
    这篇文章主要讲解了“如何使用json提取器一次性提取多个参数值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用json提取器一次性提取多个参数值”吧!json提取器提取多个值以上是响应...
    99+
    2023-06-21
  • Html5中如何使用localStorage存储JSON数据并读取JSON数据
    这篇文章将为大家详细讲解有关Html5中如何使用localStorage存储JSON数据并读取JSON数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。localStor...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作