使用Python 3从URL读取JSON

2024-10-02 16:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个从URL读取JSON的帮助,其中包含以下JSON:

{
    "totalItems":2,
    "@href":"/classes/dsxplan:Program",
    "@id":"dsxplan:Program",
    "@mask":"dsplan:MVMask.WorkPackage.Complex",
    "@type":"Collection",
    "@code":200,
    "@context":{
        "dsxplan":"xplan",
        "dsplan":"plan",
        "dspol":"pol",
        "image":{
            "@id":"dspol:image",
            "@type":"@id"
        },
        "dskern":"kern"
    },
    "member":[
        {
            "dsplan:actualType":{
                "@href":"/resources/dsxplan:Program",
                "@id":"dsxplan:Program",
                "@mask":"dskern:Mask.Default",
                "image":"iconProgram.png"
            },
            "dskern:owner":{
                "@href":"/resources/dskern:Person.Creator",
                "@id":"dskern:Person.Creator",
                "@mask":"dskern:MVMask.Person.Complex",
                "dsplan:actualType":{
                    "@href":"/resources/foaf:Person",
                    "@id":"foaf:Person",
                    "@mask":"dskern:Mask.Default"
                }
            },
            "dspol:modificationDate":"2017-09-08T17:54:36.786Z",
            "@href":"/resources/dsxplan:DSLCProgram.R-399",
            "@id":"dsxplan:DSLCProgram.R-399",
            "@mask":"dsplan:MVMask.WorkPackage.Complex",
            "@etag":"7412df19-1dde-4245-b40b-5dd86dbbe3f1"
        },
        {
            "dsplan:actualType":{
                "@href":"/resources/dsxplan:Program",
                "@id":"dsxplan:Program",
                "@mask":"dskern:Mask.Default",
                "image":"iconProgram.png"
            },
            "dskern:owner":{
                "@href":"/resources/dskern:Person.Creator",
                "@id":"dskern:Person.Creator",
                "@mask":"dskern:MVMask.Person.Complex",
                "dsplan:actualType":{
                    "@href":"/resources/foaf:Person",
                    "@id":"foaf:Person",
                    "@mask":"dskern:Mask.Default"
                }
            },
            "dspol:modificationDate":"2017-09-08T17:54:36.786Z",
            "@href":"/resources/dsxplan:xComModel2017program.R-394",
            "@id":"dsxplan:xComModel2017program.R-394",
            "@mask":"dsplan:MVMask.WorkPackage.Complex",
            "@etag":"7412df19-1dde-4245-b40b-5dd86dbbe3f1"
        }
    ]
}

我只需要从提供的链接中读取这个json。我尝试了以下代码:

import urllib.request
request= urllib.request.Request("https://dummy_link")
response = urllib.request.urlopen(request)
input = (response.read().decode('utf-8'))
json.loads(input)

此代码引发以下错误: “JSONDecodeError:期望值:第9行第1列(字符12)”

你能帮我把这个弄好吗?我真的很感谢你的帮助。!!你知道吗


Tags: imageidrequestmaskprogrampersonhrefresources
1条回答
网友
1楼 · 发布于 2024-10-02 16:26:13

您可以使用比urllib更简单的Requests库:

例如:

import requests

r = requests.get('https://dummy_link')
obj = r.json()

编辑

如果要使用urllib,可以执行以下操作:

import urllib.request
import json

with urllib.request.urlopen("https://dummy_link") as f:
    content = f.read()

obj = json.loads(content)

无需将二进制内容转换为unicode字符串。你知道吗

官方文件中有一个urllib howto。你知道吗

相关问题 更多 >