无法从json对象的json对象中添加键值对

问题描述 投票:0回答:3

我想从另一个json对象向我的json对象添加键值对。

我尝试阅读许多关于stackoverflow的类似问题,但这些解决方案均不适用于我。

const oValues = {
  action: "Open Browser & Login",
  password: "something",
  url: "https://***manage",
  user: "user1",
}

var mElementsData = {
  pages: [{
    groups: [{
      elements: [{}]
    }]
  }]
};

for (var key in oValues) {
  if (oValues.hasOwnProperty(key)) {
    mElementsData.pages.groups.elements["label"] = key;
    mElementsData.pages.groups.elements["value"] = oValues[key];
  }
}

console.log(mElementsData);
javascript json
3个回答
0
投票

您的pagesgroupselements元素都是对象数组,因此您需要引用特定的数组元素([0])来设置值:

var mElementsData = {
  pages: [{
    groups: [{
      elements: [{}]
    }]
  }]
};

var oValues = {
  key: "value"
};

for (var key in oValues) {
  if (oValues.hasOwnProperty(key)) {
    mElementsData.pages[0].groups[0].elements[0]["label"] = key;
    mElementsData.pages[0].groups[0].elements[0]["value"] = oValues[key];
  }
}
console.log(mElementsData);

0
投票

您的嵌套属性不是对象,而是对象的数组,因此您不能通过点表示法来访问它们。您可以按索引访问它们,下面是一个示例:

const oValues = {
  action: "Open Browser & Login",
  password: "something",
  url: "https://***manage",
  user: "user1",
}

var mElementsData = {
  pages: [{
    groups: [{
      elements: []
    }]
  }]
};

for (var key in oValues) {
  if (oValues.hasOwnProperty(key)) {
    const element = {
      label: key,
      value: oValues[key]
    };
    mElementsData.pages[0].groups[0].elements.push(element);
  }
}

console.log(mElementsData);

0
投票

Pagesgroupsarray,因此您必须循环并使用键和值对绑定对象

var mElementsData = {
   pages: [{
        groups: [{
            elements: [{}]
        }]
    }]
};

var oValues = {
    action: "Open Browser & Login",
    password: "something",
    url: "https://***manage",
    user: "user1",
}

for (var key in oValues) {
    if (oValues.hasOwnProperty(key)) {
        for (let i = 0; i < mElementsData.pages.length; i++) {
            let pages = mElementsData.pages[i]
            for (let j = 0; j < pages.groups.length; j++) {
                pages.groups[j].elements[j][key] = oValues[key]
            }
        }
    }
}
console.log(mElementsData)
© www.soinside.com 2019 - 2024. All rights reserved.