使用Python 3从URL读取JSON
我需要从URL读取JSON的帮助,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":"
{
"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
变量。你能把它打印出来,放到你的问题里吗?这可能与您的示例不同。非常感谢您的回复。我需要一些时间来解决遇到的新问题,并回到您提出的解决方案。我希望它能起作用,并将相应地更新您。谢谢你的努力。!!非常感谢您的回复。我需要一些时间来解决遇到的新问题,并回到您提出的解决方案。我希望它能起作用,并将相应地更新您。谢谢你的努力。!!