我正在尝试使用http包创建一个Node js服务器。我想只收到我已经实现过的POST请求。我面临的问题是我无法正确解析JSON(我希望附加一个JSON)。
我尝试使用JSON.parse但不解析整个json内容。它留下一些值作为[对象]是错误的。我看到几个包是JSONStream但我不确定如何在这种情况下实现。
r = requests.post('http://localhost:9001', headers = {'content-type': 'application/json'}, data = json.dumps(d))
请求示例:
这里d = JSON文件内容。 (我在Python中做了这个以做出这个示例请求)
{ 'Heading':
{ 'Content':
{ sometext: 'value',
List: [Object], // Wrong
test: [Array] } } } // Wrong
注意:我能够正确解析JSON,但在某些情况下会显示如下内容:
var testReq = Object.keys(jsonData)[0];
var testId = Object.keys(jsonData[testRequest])[0];
var test = jsonData[testRequest][testId]
更新
在serverNext()内部,我得到的值很少,如:
{{1}}
此外,如果我继续提取值,那么在某些时候它会遇到[Objects]值并崩溃。
答案 0 :(得分:2)
我可以使用data
将此“问题”重现为{ "Foo": {"Bar": {"Some data": [43, 32, 44]} } }
- 它会返回以下结果:{ Foo: { Bar: { 'Some data': [Object] } } }
。
正如OP提到的那样,JSON被正确解析,结果中显示[Object]
的原因是:当JavaScript Object返回显示时,它将首先由toString()
转换为String自动,这将使所有对象(包括数组)成为文本中的[Object]
。
要显示真实内容,需要调用JSON.stringify()
。在您的情况下,代码将是:
req.on('end', function () {
serverNext(req, res, JSON.stringify(jsonString));
});
请注意,最好将变量jsonString
重命名为jsonObject
。