首页 > 解决方案 > Python - 如何从 json 中检索元素

问题描述

阿罗哈,

我的 python 例程将从站点检索 json,然后检查文件并在给出第一个答案的情况下下载另一个 json,并最终下载一个 zip。第一个 json 文件提供有关 doc 的信息。这是一个例子:

[
    {
        "id": "d9789918772f935b2d686f523d066a7b",
        "originalName": "130010259_AC2_R44_20200101",
        "type": "SUP",
        "status": "document.deleted",
        "legalStatus": "APPROVED",
        "name": "130010259_SUP_R44_AC2",
        "grid": {
            "name": "R44",
            "title": "GRAND EST"
        },
        "bbox": [
            3.4212881,
            47.6171589,
            8.1598899,
            50.1338684
        ],
        "documentSource": "UPLOAD",
        "uploadDate": "2020-06-25T14:56:27+02:00",
        "updateDate": "2021-01-19T14:33:35+01:00",
        "fileIdentifier": "SUP-AC2-R44-130010259-20200101",
        "legalControlStatus": 101
    },
    {
        "id": "6a9013bdde6acfa632861aeb1a02942b",
        "originalName": "130010259_AC2_R44_20210101",
        "type": "SUP",
        "status": "document.production",
        "legalStatus": "APPROVED",
        "name": "130010259_SUP_R44_AC2",
        "grid": {
            "name": "R44",
            "title": "GRAND EST"
        },
        "bbox": [
            3.4212881,
            47.6171589,
            8.1598899,
            50.1338684
        ],
        "documentSource": "UPLOAD",
        "uploadDate": "2021-01-18T16:37:01+01:00",
        "updateDate": "2021-01-19T14:33:29+01:00",
        "fileIdentifier": "SUP-AC2-R44-130010259-20210101",
        "legalControlStatus": 101
    },
    {
        "id": "efd51feaf35b12248966cb82f603e403",
        "originalName": "130010259_PM2_R44_20210101",
        "type": "SUP",
        "status": "document.production",
        "legalStatus": "APPROVED",
        "name": "130010259_SUP_R44_PM2",
        "grid": {
            "name": "R44",
            "title": "GRAND EST"
        },
        "bbox": [
            3.6535762,
            47.665021,
            7.9509455,
            49.907347
        ],
        "documentSource": "UPLOAD",
        "uploadDate": "2021-01-28T09:52:31+01:00",
        "updateDate": "2021-01-28T18:53:34+01:00",
        "fileIdentifier": "SUP-PM2-R44-130010259-20210101",
        "legalControlStatus": 101
    },
    {
        "id": "2e1b6104fdc09c84077d54fd9e74a7a7",
        "originalName": "444619258_I4_R44_20210211",
        "type": "SUP",
        "status": "document.pre_production",
        "legalStatus": "APPROVED",
        "name": "444619258_SUP_R44_I4",
        "grid": {
            "name": "R44",
            "title": "GRAND EST"
        },
        "bbox": [
            2.8698336,
            47.3373246,
            8.0881368,
            50.3796449
        ],
        "documentSource": "UPLOAD",
        "uploadDate": "2021-04-19T10:20:20+02:00",
        "updateDate": "2021-04-19T14:46:21+02:00",
        "fileIdentifier": "SUP-I4-R44-444619258-20210211",
        "legalControlStatus": 100
    }
]

我尝试做的是从此 json 文件中检索“id”。(例如“id”:“2e1b6104fdc09c84077d54fd9e74a7a7”,)

我试过了

import json
from jsonpath_rw import jsonpath, parse
import jsonpath_rw_ext as jp

with open('C:/temp/gpu/SUP/20210419/SUPGE.json') as f:
    d = json.load(f)
    data = json.dumps(d)
    print("oriName: {}".format( jp.match1("$.id[*]",data) ) )
    

它不起作用事实上,我不确定 jsonpath-rw 是如何工作的。谢天谢地,有这篇博文,但我仍然卡住了。

有人有线索吗 ?

有了这个id,我就可以下载另一个json,在这个json中会有一个archiveUrl来获取zipfile。

提前致谢。

标签: pythonjsonpython-3.xjsonpath

解决方案


import  json

file = open('SUPGE.json')


with file as f:

    d = json.load(f)
    for i in d:
        print(i.get('id'))

这只会给你 id。

d9789918772f935b2d686f523d066a7b
6a9013bdde6acfa632861aeb1a02942b
efd51feaf35b12248966cb82f603e403
2e1b6104fdc09c84077d54fd9e74a7a7


推荐阅读