2017-01-10 90 views
0

因此,我一直在试图解决这个昨天和今天的所有问题,但无法弄清楚。我有以下的称为如何访问数组中的变量

var myRequest = req.body 
console.log(myRequest) 

变量返回产生如下:

{ 
    "methodcall": { 
     "methodname": ["userLogin"], 
     "params": [{ 
      "param": [{ 
       "value": [{ 
        "string": ["test1"] 
       }] 
      }, { 
       "value": [{ 
        "string": ["password"] 
       }] 
      }] 
     }] 
    } 
} 

现在,我需要访问params键,并访问第一个参数值,以便无论在返回第一个参数值字符串作为用户名存储在一个变量中,并且任何以参数值字符串(第二个)返回的值都存储为密码。

所以最终的效果是这样的:

var username = myRequest.methodcall.params.param...first value string 
var password = myRequest.methodcall.params.param...second value string 

不过,我真的很努力理解如何做到这一点。我猜对于每个循环会出现在这个,但我没有与他们的经验,所以会欣赏一些提示。

此外,当我尝试做myRequest.methodcall,我不断收到未定义,返回。

任何帮助将不胜感激!

+0

你有自由去改变对象的结构? –

+0

不...但我正在尝试学习编码,所以我认为这很愚蠢,因为问题似乎会帮助我'myRequest.methodcall.params [0] .param [0] .value [0] .string [0]'和myRequest – noDe1

+0

.methodcall.params [0] .param [1] .value [0] .string [0]'将允许您直接访问它。每当你看到方括号时,这表示一个数组,因此你必须像数组一样访问它。 – snanda

回答

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]; 
0

你已经张贴什么是JSON。你需要将其设置为:

var myRequest = JSON.parse(req.body) 

这将允许您像访问正常的js对象那样访问它。

+0

啊我明白了。但是,那么我将如何确保将第一个值存储为用户名,将第二个值存储为密码? – noDe1

-1

你有没有调试代码? 我的意思是这些代码:

var username = myRequest.methodcall.params.param[0]; 
var password = myRequest.methodcall.params.param[1]; 
0

使用.访问钥匙,对象和[]访问数组中的索引。

此代码应工作:

var username = myRequest.methodcall.params[0].param[0].value[0].string[0]

0

如果你想使用一个循环,在获取值test1password,等等。您可以使用一个循环,并访问param阵列:

var params = myRequest.methodcall.params[0].param; 

params.forEach(function(item){ 
    console.log(item.value[0].string[0]); 
}); 

Fiddle

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) 
 
}

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];