0

別のオブジェクトでJavaスクリプトオブジェクトのコンテンツを取得する方法は? 私の変数が次のようになっているとしましょう:

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

var params={
       "Credentials":credentials
       }

params をパラメーターとして同じ他の関数に渡しています。その関数には、次のように別のオブジェクト pkt があります。

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

私の最終的なpkt構造が次のようになるように、XXXXで何をコーディングするか:

pkt={
     "name":xxx,
     "Credentials": {
                   "name":userName,
                   "passwd":password
                    } 
    }

パラメータ内に複数のオブジェクトが存在する場合があります。要件は、キーと値のペアがそれに応じて来る必要があることです。同等の 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

連想配列構造を使用することもできます。

すなわち

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


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

pkt["Credentials"] = credentials

これについては特にわかりませんが、これは期待どおりに機能するはずです。

于 2013-09-05T07:08:21.070 に答える
1

$.extendまたは_.extendのようなライブラリ関数を使用できます。

pkt = $.extend(pkt, params);

それ以外の場合は、params をループして、各キーと値のペアを pkt に追加できます。

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

hasOwnPropertyを使用して、祖先メンバーのループを回避します。

于 2013-09-05T07:05:42.233 に答える
1

Javascript オブジェクトは単なるハッシュマップです。

    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/ )に見られるように割り当てることができます

于 2013-09-05T07:05:51.960 に答える
0

探していることを実行する 2 つのクイック関数を次に示します。最初の関数はキーと値を新しいオブジェクトに追加し、2 番目の関数はキーと値を最初のオブジェクトに追加します。

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 に答える