映射JSON键并使用angular2更新另一个JSON中的值

时间:2018-08-10 09:14:30

标签: angular

我有一个Angular 2表单值,它是通过以下方式提交form(表单值)后生成的,

表单数据:

   {
      "LoyaltyNumber": "mal",
      "CardAcceptorName": "John",
    }

我还有另一个JSON对象,我们需要将最终值发送到服务器。

{
  "LoyaltyNumber": {
    "tcId": "PREQ_001",
    "msgSeq": 1,
    "value": "" 
  },
"CardAcceptorName": {
    "tcId": "PREQ_001",
    "msgSeq": 1,
    "value": ""
  }
}

而且,我想从第二个JSON更新value,并使用第一个JSON中的值。

3 个答案:

答案 0 :(得分:1)

您可以使用Object.keys()遍历第一个json对象的键。 Object.keys()返回包含键名的字符串数组。因此,我们可以针对该结果调用.forEach()。在foreach方法中,我们可以使用键来访问secondJsonObj中的子对象。

Object.keys(firstJsonObj).forEach(key => {
    if (secondJsonObj[key]) {
        secondJsonObj[key].value = firstJsonObj[key]
    }
});

答案 1 :(得分:0)

第一个JSON分配给firstJsonObj,第二个JSON分配给secondJsonObj;

firstJsonObj = {
  "LoyaltyNumber": "mal",
  "CardAcceptorName": "John",
};

secondJsonObj = {
  "LoyaltyNumber": {
    "tcId": "PREQ_001",
    "msgSeq": 1,
    "value": "" 
  },
"CardAcceptorName": {
    "tcId": "PREQ_001",
    "msgSeq": 1,
    "value": ""
  }
};

您可以分配这样的值

secondJsonObj.LoyaltyNumber.value = firstJsonObj.LoyaltyNumber;
secondJsonObj.CardAcceptorName.value = firstJsonObj.CardAcceptorName;

如果要动态。

Object.keys(firstJsonObj).forEach(function(key){
      secondJsonObj[key]. value = firstJsonObj[key];
 });

答案 2 :(得分:0)

尝试一下:

var json1 = {
      "LoyaltyNumber": "mal",
      "CardAcceptorName": "John"
    };

var json2 = {
  "LoyaltyNumber": {
    "tcId": "PREQ_001",
    "msgSeq": 1,
    "value": "" 
  },
"CardAcceptorName": {
    "tcId": "PREQ_001",
    "msgSeq": 1,
    "value": ""
  }
};

json2.LoyaltyNumber.value = json1.LoyaltyNumber;
json2.CardAcceptorName.value= json1.CardAcceptorName;

console.log(JSON.stringify(json2));

输出:

{“ LoyaltyNumber”:{“ tcId”:“ PREQ_001”,“ msgSeq”:1,“ value”:“ mal”},“ CardAcceptorName”:{“ tcId”:“ PREQ_001”,“ msgSeq”:1 ,“ value”:“ John”}}