如何在另一个对象中获取java脚本对象的内容? 假设我的变量如下:
var credentials ={
"name":userName,
"passwd":password
}
var params={
"Credentials":credentials
}
我将params作为参数传递给同一个其他函数。在该函数中我有另一个对象pkt,如下所示:
var pkt={
"name":xxx,
//XXXX
}
在XXXX处编码什么,以便我的最终pkt结构应该像:
pkt={
"name":xxx,
"Credentials": {
"name":userName,
"passwd":password
}
}
我们可能在params中有多个对象,要求是键值对应该相应地出现。 等效的java代码如下:
Iterator iterKeys = params.keySet().iterator();
while (iterKeys.hasNext())
{
String key = (String)iterKeys.next();
JSONValue value = params.get(key);
pkt.put(key, value);
}
感谢。
答案 0 :(得分:1)
pkt = $.extend(pkt, params);
否则你可以遍历params并将每个键/值对添加到pkt:
for (var key in params){
pkt[key] = params[key];
}
使用hasOwnProperty来避免循环祖先成员。
答案 1 :(得分:1)
Javascript对象只是Hashmaps。
var credentials = {
"name": "userName",
"passwd": "password"
}
var params = {
"Credentials": credentials
}
var pkt = {
"name": "xxx",
}
for (var property in params) {
if (params.hasOwnProperty(property)) {
var value = property;
pkt[property] = params[property];
}
}
alert(JSON.stringify(pkt));
你可以在[这个小提琴]看到分配 (http://jsfiddle.net/TfWMy/)
答案 2 :(得分:1)
您也可以使用关联数组结构。
即
var credentials = {
"name": "userName",
"passwd": "password"
}
var pkt = {
"name": "xxx",
}
pkt["Credentials"] = credentials
对此并不十分肯定,但这应该按预期工作。
答案 3 :(得分:0)
这里有两个快速功能,应该做你想要的。第一个将键和值添加到新对象,第二个函数将键和值添加到第一个对象。
var mergeObjectsToNew = function(o1, o2) {
var r = {};
for (var key in o1) {
r[key] = o1[key];
}
for (var key in o2) {
r[key] = o2[key];
}
return r;
}
var mergeObjects = function(o1, o2) {
for (var key in o2) {
o1[key] = o2[key];
}
return o1;
}
答案 4 :(得分:0)
我认为你希望用另一个扩展你的对象。
请遵守代码,我希望这是您需要的。
var credentials ={
"name":"",
"passwd":""
}
var params={
"Credentials":credentials
}
var pkt={
name:"ABC"
};
function Extends(param1,param2){
var object = $.extend({}, param1, param2);
console.log(object);
}
Extends(params,pkt);
请找下小提琴