Skip to main content
 首页 » 编程设计

python之如何在 Django 中将 Http Post 参数的 Json 值转换为 Python Dict

2024年08月30日26freeliver54

我正在使用 Django 接收和处理来自 foursquare 实时 api 的推送通知。每个 checkin 都作为 POST 请求推送到我的服务器,其中包含一个名为 checkin 的参数。我正在尝试获取 checkin 参数的值并将其转换为 python 字典。但是,调用 json.loads 总是会导致以下错误:

NameError: name 'true' is not defined 

我知道 json 是有效的,所以我肯定做错了什么。

代码是:

import json     
def push(request): 
  if request.is_secure(): 
    checkin_json = request.POST['checkin'] 
    checkin = json.load(request.POST) 

post请求的正文是:

"checkin =  
{ 
"id": "4e6fe1404b90c00032eeac34", 
"createdAt": 1315955008, 
"type": "checkin", 
"timeZone": "America/New_York", 
"user": { 
    "id": "1", 
    "firstName": "Jimmy", 
    "lastName": "Foursquare", 
    "photo": "https://foursquare.com/img/blank_boy.png", 
    "gender": "male", 
    "homeCity": "New York, NY", 
    "relationship": "self" 
}, 
"venue": { 
    "id": "4ab7e57cf964a5205f7b20e3", 
    "name": "foursquare HQ", 
    "contact": { 
        "twitter": "foursquare" 
    }, 
    "location": { 
        "address": "East Village", 
        "lat": 40.72809214560253, 
        "lng": -73.99112284183502, 
        "city": "New York", 
        "state": "NY", 
        "postalCode": "10003", 
        "country": "USA" 
    }, 
    "categories": [ 
        { 
            "id": "4bf58dd8d48988d125941735", 
            "name": "Tech Startup", 
            "pluralName": "Tech Startups", 
            "shortName": "Tech Startup", 
            "icon": "https://foursquare.com/img/categories/building/default.png", 
            "parents": [ 
                "Professional & Other Places", 
                "Offices" 
            ], 
            "primary": true 
        } 
    ], 
    "verified": true, 
    "stats": { 
        "checkinsCount": 7313, 
        "usersCount": 565, 
        "tipCount": 128 
    }, 
    "url": "http://foursquare.com" 
} 
}" 

请您参考如下方法:

尝试使用 json.loads(checkin_json) 而不是 json.load(request.POST)。注意额外的“s”。