Sha*_*rma 5 javascript json node.js
我正在尝试使用 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':
{ 'Content':
{ sometext: 'value',
List: [Object], // Wrong
test: [Array] } } } // Wrong
Run Code Online (Sandbox Code Playgroud)
更新:
在 serverNext() 中我得到了一些值,例如:
var testReq = Object.keys(jsonData)[0];
var testId = Object.keys(jsonData[testRequest])[0];
var test = jsonData[testRequest][testId]
Run Code Online (Sandbox Code Playgroud)
此外,如果我继续提取值,那么在某个时刻它会遇到 [Objects] 值并崩溃。
我可以用dataas重现这个“问题” { "Foo": {"Bar": {"Some data": [43, 32, 44]} } }——它返回以下结果:{ Foo: { Bar: { 'Some data': [Object] } } }。
正如OP中提到的,JSON被正确解析,在结果中显示的原因[Object]是:当JavaScript对象返回显示时,它会首先toString()自动转换为String,这将使所有对象(包括数组)如下[Object]所示文本。
要显示真实的内容,JSON.stringify()需要调用。在你的情况下,代码将是:
req.on('end', function () {
serverNext(req, res, JSON.stringify(jsonString));
});
Run Code Online (Sandbox Code Playgroud)
请注意,最好将变量重命名jsonString为jsonObject.
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |