2016-11-20 44 views
0

我試圖訪問JSON字典中的某些信息字段。我的代碼被設置爲以下幾點:在Django中使用JSON字典

Views.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_content": issue['issues']['content'], 
     "title": "View Issues", 
    } 
    return render(request, "view_issues.html", context) 

STR(issue_payload)使我這個:

{ 
    '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和索引['問題'] ['標題']和['問題'] ['標題']我得到一個錯誤:

JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1) 

我想知道是否因爲轉換的有效載荷在每個字段上有引號(即'問題')。任何幫助將非常感激。

+1

這是無效的JSON。應該是雙引號字符串。你不能使用像Python這樣的引號類型。你實際上擁有的是對象的Python表示,而不是JSON。你不需要自己解碼它,因爲''json()''方法已經爲你做了。你最終得到了Python表示法,因爲你對已經是Python對象的東西使用了''str()''。 –

+0

只需刪除此行'issue = json.loads(str(issue_payload))'並使用'issue_payload';它已經是一本字典了。 –

回答

4

.json()調用已經解析JSON結果在這種情況下字典返回一個Python結構。然後你的電話

issue = json.loads(str(issue_payload)) 

強制字典變成一個字符串,並試圖再次解析它。但字典字符串表示形式在字符串周圍包含',而不是JSON中所需的"

短切長的故事:issue_payload是你想要什麼已經。