0

如何在另一个对象中获取 java 脚本对象的内容?假设我的变量如下:

var credentials ={
                 "name":userName,
                 "passwd":password
                 } 

var params={
       "Credentials":credentials
       }

我将参数作为参数传递给相同的其他函数。在该函数中,我有另一个对象 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);
        }

谢谢。

4

5 回答 5

1

您可以使用像$.extend_.extend这样的库函数:

pkt = $.extend(pkt, params);

否则,您可以遍历参数并将每个键/值对添加到 pkt:

for (var key in params){
    pkt[key] = params[key];
}

使用hasOwnProperty避免循环遍历祖先成员。

于 2013-09-05T07:05:42.233 回答
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));

您可以按照 [this fiddle] ( http://jsfiddle.net/TfWMy/ )中的说明进行分配

于 2013-09-05T07:05:51.960 回答
1

您还可以使用关联数组结构。

IE

var credentials = {
    "name": "userName",
        "passwd": "password"
}


var pkt = {
    "name": "xxx",
}

pkt["Credentials"] = credentials

对此不是特别确定,但这应该可以按预期工作。

于 2013-09-05T07:08:21.070 回答
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;
}
于 2013-09-05T07:08:40.040 回答
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);

请在下面找到小提琴

小提琴

于 2013-09-05T07:16:35.977 回答