Python json.dumps将空字符串转换为null

时间:2016-01-30 10:17:40

标签: python json

我有一个带有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,并且在该实例中正确地遇到空字符串。

1 个答案:

答案 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)