Python 在Django中使用JSON dict
我试图访问JSON dict中的某些信息字段。我的代码设置如下: 视图.pyPython 在Django中使用JSON dict,python,json,django,Python,Json,Django,我试图访问JSON dict中的某些信息字段。我的代码设置如下: 视图.py def viewIssues(request): r = requests.get(bucket_url) issue_payload = r.json() issue = json.loads(str(issue_payload)) context = { "issue_title": issue['issues']['title'], "issue_
def viewIssues(request):
r = requests.get(bucket_url)
issue_payload = r.json()
issue = json.loads(str(issue_payload))
context = {
"issue_title": issue['issues']['title'],
"issue_content": issue['issues']['content'],
"title": "View Issues",
}
return render(request, "view_issues.html", context)
str(问题载荷)给了我以下信息:
{
'search':None,
'count':1,
'filter':{
},
'issues':[
{
'priority':'major',
'comment_count':0,
'utc_created_on':'2016-11-12 01:48:16+00:00',
'utc_last_updated':'2016-11-12 01:48:16+00:00',
'status':'new',
'title':'example issue',
'reported_by':{
'is_staff':False,
'display_name':'display name',
'is_team':False,
'resource_uri':'/1.0/users/username',
'avatar':'https://bitbucket.org/account/username/avatar/32/?ts=1479493904',
'first_name':'firstname',
'username':'username',
'last_name':'lastname'
},
'is_spam':False,
'content':'blah blah',
'metadata':{
'milestone':None,
'component':None,
'version':None,
'kind':'bug'
},
'local_id':1,
'created_on':'2016-11-12T02:48:16.052',
'resource_uri':'/1.0/repositories/username/supportal2016test/issues/1',
'follower_count':1
}
]
}
但是,当我尝试使用json.loads和index['issues']['title']和['issues']['title']时,我得到一个错误:
JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
我想知道这是否是因为转换后的有效负载在每个字段上都有报价(即“问题”)。任何帮助都将不胜感激。调用.json()
已经解析了json结果,并返回了一个Python结构,在本例中是一个字典。那你的电话呢
issue = json.loads(str(issue_payload))
将字典强制转换为字符串并再次尝试解析它。但是字典字符串表示法包含字符串周围的“
,而不是JSON中所要求的”
长话短说:issue\u有效载荷
已经是您想要的了。调用.json()
已经解析了json结果,并返回了一个Python结构,在本例中是一个字典
issue = json.loads(str(issue_payload))
将字典强制为字符串并尝试再次解析它。但字典字符串表示法包含字符串周围的“
,而不是JSON中所需的”
长话短说:
issue\u有效载荷
已经是您想要的了。它不是有效的JSON。字符串应为双引号。您不能像Python那样使用这两种引号类型。您实际拥有的是对象的Python表示,而不是JSON。您不需要自己解码,因为json()
方法已经为您完成了解码。您最终使用Python表示,因为您对已经是Python对象的对象使用了str()
。只需删除这一行issue=json.loads(str(issue_payload))
并使用issue_payload
;它已经是一个字典。它不是有效的JSON。字符串应为双引号。您不能像Python那样使用这两种引号类型。您实际拥有的是对象的Python表示,而不是JSON。您不需要自己解码,因为json()
方法已经为您完成了解码。您最终使用Python表示,因为您对已经是Python对象的对象使用了str()
。只需删除这一行issue=json.loads(str(issue_payload))
并使用issue_payload
;它已经是一本字典了。