gpt4 book ai didi

javascript - Node js http服务器接受POST并接受JSON

转载 作者:搜寻专家 更新时间:2023-10-31 23:19:53 25 4
gpt4 key购买 nike

我正在尝试使用 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();
});

请求示例:

这里 d = JSON 文件内容。 (我用 Python 做了这个来发出这个示例请求)

r = requests.post('http://localhost:9001', headers = {'content-type': 'application/json'}, data = json.dumps(d))

注意:我能够正确解析 JSON,但在某些情况下它会显示如下内容:

{ 'Heading': 
{ 'Content':
{ sometext: 'value',
List: [Object], // Wrong
test: [Array] } } } // Wrong

更新:

在 serverNext() 内部,我得到的值很少,例如:

var testReq = Object.keys(jsonData)[0];
var testId = Object.keys(jsonData[testRequest])[0];
var test = jsonData[testRequest][testId]

此外,如果我继续提取值,那么在某个时候它会遇到 [Objects] 值并崩溃。

最佳答案

我可以用 data 重现这个“问题”作为{ "Foo": {"Bar": {"Some data": [43, 32, 44]} } } -- 它返回以下结果:{ Foo: { Bar: { 'Some data': [Object] } } } .

正如 OP 在问题中提到的那样,JSON 被正确解析,原因是 [Object] result中显示的是:返回JavaScript Object显示时,会先通过toString()转成String自动,这将使所有对象(包括数组)为[Object]在文本中。

要显示真实内容,JSON.stringify()需要被调用。在您的情况下,代码将是:

req.on('end', function () {
serverNext(req, res, JSON.stringify(jsonString));
});

请注意最好重命名变量jsonString作为jsonObject .

关于javascript - Node js http服务器接受POST并接受JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45893104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com