我有一个带有Person对象的Python模块,我正在这样初始化
person = {
'name': "",
'city': "",
'phone1': "",
'emailaddress': "",
}
然后我尝试填充字段,如果我无法获得我之后的值,则指望回落到默认的空字符串。然后我发布了这个对象:
req = urllib2.Request('API_LOCATION')
req.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(req, json.dumps(person))
另一方面,我正在使用一个收集该人的ASP.NET web api,我发现应该是空字符串的项目为空
[System.Web.Http.HttpPost]
[System.Web.Http.Route("api/postperson")]
public JsonResult PostPerson(Person item)
{
... Items that I expect to be empty strings are actually null
}
我做错了什么?我想在python模块中发送空字符串,而不是空值。我已经测试过使用ASP.NET客户端发布到相同的api,并且在该实例中正确地遇到空字符串。
答案 0 :(得分:2)
json
工作正常。只是urllib
有一个非常令人困惑,冗长且完全不直观的界面。以下是使用urllib
提交这些数据参数的方式:
import urllib
import urllib2
data = urllib.urlencode(person)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
但实际上,你应该立即摆脱urllib
并开始使用requests
reponse = requests.get(url, data=person)
或
response = requests.post(url, data=person)