所以,我昨天和今天一直试图解决这个问题,但无法弄明白。我在一个名为
的变量中返回了以下内容var myRequest = req.body
console.log(myRequest)
产生以下内容:
{
"methodcall": {
"methodname": ["userLogin"],
"params": [{
"param": [{
"value": [{
"string": ["test1"]
}]
}, {
"value": [{
"string": ["password"]
}]
}]
}]
}
}
现在,我需要访问params键,并访问第一个param值,以便第一个param值字符串中返回的内容在变量中存储为username,并在param值字符串中返回任何内容(第二个) ),存储为密码。
所以最后的效果是这样的:
var username = myRequest.methodcall.params.param...first value string
var password = myRequest.methodcall.params.param...second value string
然而,我真的很难理解如何做到这一点。我猜测每个循环都会出现在这里,但是我没有经验,所以会很感激一些提示。
此外,当我尝试myRequest.methodcall
时,我会继续返回未定义的内容。
任何帮助将不胜感激!
答案 0 :(得分:0)
您发布的是JSON。你需要设置它:
var myRequest = JSON.parse(req.body)
这将允许您像普通的js对象一样访问它。
答案 1 :(得分:0)
听起来你的价值是JSON,首先解析它然后你应该能够得到它的值:
var myRequest = JSON.parse(req.body);
var userName = myRequest.methodcall.params[0].param[0].value[0].string[0];
var password = myRequest.methodcall.params[0].param[1].value[0].string[0];
答案 2 :(得分:0)
使用.
访问对象中的密钥,使用[]
访问数组中的索引。
此代码应该有效:
var username = myRequest.methodcall.params[0].param[0].value[0].string[0]
答案 3 :(得分:0)
如果您想使用循环,请获取值test1
,password
等。您可以使用循环访问param
数组:
var params = myRequest.methodcall.params[0].param;
params.forEach(function(item){
console.log(item.value[0].string[0]);
});
答案 4 :(得分:0)
//var myRequest = JSON.parse(req.body) // if JSON
var myRequest = {
"methodcall": {
"methodname": ["userLogin"],
"params": [{
"param": [{
"value": [{
"string": ["test1"]
}]
}, {
"value": [{
"string": ["password"]
}]
}]
}]
}
};
var params = myRequest.methodcall.params;
var uname, pwd;
for (var i = 0; i < params.length; i++) {
console.log("uname is " + params[i].param[0].value[0].string);
console.log("pwd is " + params[i].param[1].value[0].string)
}
答案 5 :(得分:0)
如果您的响应结构相同,则无需进行循环或其他操作,只需直接访问响应中的用户名和密码即可。 试试这个。
var username = myRequest.methodcall.params[0].param[0].value[0].string[0];
var password = myRequest.methodcall.params[0].param[1].value[0].string[0];
答案 6 :(得分:-1)
你调试了代码吗? 我的意思是这些代码:
var username = myRequest.methodcall.params.param[0];
var password = myRequest.methodcall.params.param[1];