我有一个接收此JSON对象的node.js服务器作为put:
{
stats = {
abdominal=0,
bicep=0,
deltoids=0,
erector_spinae=0,
gastro_soleus=0,
gluteus=0,
hamstrings=0,
lat_dor_rhom=0,
obliques=0,
pectoralis=0,
quadriceps=0,
trapezius=0,
triceps=0
},
name=Name,
_id=userid,
level=1,
experience=200
}
我使用这段代码来尝试访问数据:
user.name = req.body.name;
user.level = req.body.level;
user.experience = req.body.experience;
user.stats = {
abdominal: req.body.stats["abdominal"],
bicep: req.body.stats["bicep"],
deltoids: req.body.stats["deltoids"],
erector_spinae: req.body.stats["erector_spinae"],
gastro_soleus: req.body.stats["gastro_soleus"],
gluteus: req.body.stats["gluteus"],
hamstrings: req.body.stats["hamstrings"],
lat_dor_rhom: req.body.stats["lat_dor_rhom"],
obliques: req.body.stats["obliques"],
pectoralis: req.body.stats["pectoralis"],
quadriceps: req.body.stats["quadriceps"],
trapezius: req.body.stats["trapezius"],
triceps: req.body.stats["triceps"]
};
名称,级别和体验值更新得很好,但访问stats对象的成员似乎不起作用。当我做一个简单的console.log(req.body["stats"]["abdominal"]);
时,我得到一个undefined
。 console.log(req.body["stats"]);
确实有效,并打印出整个对象。有关访问这些变量的原因的任何想法都没有用?
答案 0 :(得分:0)
嗯,我没有解决问题,但我认为拥有一个嵌套对象真的没什么好处,所以我只是把它做成了一层。这解决了我遇到的问题。
答案 1 :(得分:0)
我有同样的问题。事实证明我没有使用正确的ContentType(我的客户端代码是发布application / x-www-form-urlencoded)...所以,表单正文解析器正在解析内容。
切换到发布正确的内容(例如json)和包括正确的ContentType标头(例如Content-Type:application / json)修复了包含正如您所描述的属性的问题(注意:如果你使用类似jquery的东西,指定ContentType选项将同时为你做这两件事。)
然而,值得注意的是,我仍然遇到嵌套在另一个对象中的对象的问题(数组中嵌套的对象似乎工作正常)。
e.g。客户发送:
`
{
"someObj": {
"someChild": {
"someProp": "0"
}
},
"someChild": {
"someProp": "0"
}
}
`
服务器解析 `
{
"someObj": {
"someChild": { }
},
"someChild": {
"someProp": "0"
}
}
`