使用Python 3从URL读取JSON

使用Python 3从URL读取JSON,python,json,python-3.x,Python,Json,Python 3.x,我需要从URL读取JSON的帮助,URL中包含以下JSON: { "totalItems":2, "@href":"/classes/dsxplan:Program", "@id":"dsxplan:Program", "@mask":"dsplan:MVMask.WorkPackage.Complex", "@type":"Collection", "@code":200, "@context":{ "dsxplan":"

我需要从URL读取JSON的帮助,URL中包含以下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)”

你能帮我把这个弄对吗?我真的很感谢你的帮助

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

例如:

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更简单的库:

例如:

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字符串


官方文档中有一个文件。

只需切换到
请求
模块,并在响应上调用
.json()
,您可以向我们展示
输入
的样子吗?@roganjosh-将请求与.json()交换。我真的不明白。请您更新代码并将其显示给我好吗?@birryrree-我在问题中粘贴的json是使用链接的输入(您无法访问)。我理解这一点,但您也将其读入
input
变量。你能把它打印出来,放到你的问题里吗?它可能与您的示例有所不同。只需切换到
请求
模块,并在响应上调用
.json()
,您可以向我们展示
输入
的样子吗?@roganjosh-将请求与.json()交换。我真的不明白。请您更新代码并将其显示给我好吗?@birryrree-我在问题中粘贴的json是使用链接的输入(您无法访问)。我理解这一点,但您也将其读入
input
变量。你能把它打印出来,放到你的问题里吗?这可能与您的示例不同。非常感谢您的回复。我需要一些时间来解决遇到的新问题,并回到您提出的解决方案。我希望它能起作用,并将相应地更新您。谢谢你的努力。!!非常感谢您的回复。我需要一些时间来解决遇到的新问题,并回到您提出的解决方案。我希望它能起作用,并将相应地更新您。谢谢你的努力。!!