我正在尝试使用 http 包创建一个 Node js 服务器。我只想接收我已经实现的 POST 请求。我面临的问题是我无法正确解析 JSON(我期望附加一个 JSON)。
我尝试使用 JSON.parse 但它不能解析整个 json 内容。它将一些值保留为 [Object],这是错误的。我看到了几个 JSONStream 包,但我不确定在这种情况下如何实现。
server.on('request', function(req, res){
if(req.method == 'POST')
{
var jsonString;
req.on('data', function (data) {
jsonString = JSON.parse(data);
});
req.on('end', function () {
serverNext(req, res, jsonString);
});
}
else
{
res.writeHead(405, {'Content-type':'application/json'});
res.write(JSON.stringify({error: "Method not allowed"}, 0, 4));
}
res.end();
});
Run Code Online (Sandbox Code Playgroud)
请求示例:
这里 d = JSON 文件内容。(我在 Python 中这样做是为了发出这个示例请求)
r = requests.post('http://localhost:9001', headers = {'content-type': 'application/json'}, data = json.dumps(d))
Run Code Online (Sandbox Code Playgroud)
注意:我能够正确解析 JSON,但在某些情况下它会显示如下内容:
{ 'Heading':
{ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个函数,我希望用户输入一些细节,并在此基础上我需要过滤掉这些数据并返回它.
例如,如果在我的模型名称中,我有:
名称.年龄,性别然后我想做:
Profile.objects.filter(name=name, age=age, gender=gender)
姓名,年龄和性别是由用户提供的值.现在,如果用户输入name ='Shashank'并将年龄和性别留空,那么我需要查询它:
Profile.objects.filter(name='Shashank')
而忽略所有那些空白值.所以我不确定如何实现这种行为.我可以设置什么类型的初始值,以便它不会影响搜索结果.
Profile.objects.filter(name='Shashank', age=<VALUE>, gender=<VALUE>)
<VALUE>
过滤函数可以忽略哪里.
注意:我不想编写所有可能的filter语句组合,因为它不方便.
我尝试过使用None
,False
但它给出了错误的结果
最近我在Python中学习了更多关于哈希的知识,我在这个博客中说到:
假设一个Python程序有2个列表.如果我们需要考虑比较这两个列表,你会怎么做?比较每个元素?嗯,这听起来很简单,但也很慢!
Python有一个更聪明的方法来做到这一点.当在程序中构造元组时,Python解释器会在其内存中计算其哈希值.如果在2个元组之间进行比较,它只是比较哈希值,它知道它们是否相等!
所以我对这些陈述感到很困惑.
首先,当我们这样做时:
[1, 2, 3] == [1, 2, 3]
那么这种平等如何运作?它是否计算哈希值然后进行比较?
第二,当我们做的时候有什么不同:
[1, 2, 3] == [1, 2, 3]
和(1, 2, 3) == (1, 2, 3)
?
因为当我试图用timeit找到执行时间时,我得到了这个结果:
$ python3.5 -m timeit '[1, 2, 3] == [1, 2, 3]'
10000000 loops, best of 3: 0.14 usec per loop
$ python3.5 -m timeit '(1, 2, 3) == (1, 2, 3)'
10000000 loops, best of 3: 0.0301 usec per loop
Run Code Online (Sandbox Code Playgroud)
那么为什么从0.14
列表到0.03
元组的时间差异比列表更快.