用 JSON 中的动态值替换键
Replace keys with dynamic values in JSON
在下面的 JSON 中,我想将 KEYS xyz 和 abc 替换为我通过以下语句从表单中获取的 alliance 和 env 的动态值,将引号中的单词 abc 替换为直下面的对象名称给我一个错误。有什么方法可以实现吗?
var env = g_form.getValue('vpc_environment_type');
var alliance = g_form.getValue('alliance_business_unit');
var team = g_form.getVal`enter code here`ue('alliance_segment_team_name_df_ingestion');
var project = g_form.getValue('project_name_gcp_df_ingestion_npe');
var requestBody = {
"format_version": "0.2.19",
"alliances": {
"xyz": {
"environments": {
"abc": {
"teams": {
"dna": {
"action": "edit",
"team": "dna",
"projects": {
"xxxx": {
"project": "xxxxx",
"cost_center": "0",
"custom_iam_policies": [],
"iam": {
"dev_group_email_name": "123",
"view_group_email_name": "456",
"sre_admin_group_email_name": "789"
},
"allowed_apis": [
"123",
"123"
],
"networks": {
"xxxxx": {
"flags": [
"VM"
],
"region": "123,
"preferred-suffix" : "123"
}
}
}
}
}
}
}
}
}
}
};
requestBody = new global.JSON().encode(requestBody);
console.log(requestBody);
尝试这样的事情。请注意,您不能只重命名 JavaScript 对象中的键,您需要添加一个具有新名称的新键并在不需要时删除旧键。另请注意,当您删除旧密钥时,如果数据发生变化,您可能会删除新密钥中的值。
var alliance = g_form.getValue('alliance_business_unit');
requestBody.alliances[alliance] = requestBody.alliances.xyz;
这将在与从 g_form.getValue('alliance_business_unit');
返回的密钥名称联盟下添加新密钥
对 env 也同样如此。
动态赋值是这样完成的
object[variable] = value;
如果你的变量有值测试,你将有一个像这样的对象
{test: 'your value' }
Stringify > 替换 > 转换为 JSON
您需要用您想要的键替换字符串:Dynamic1 和 Dynamic2。
requestBody = JSON.parse(JSON.stringify(requestBody).replace("\"xyz\"","\"Dynamic1\"").replace("\"abc\"","\"Dynamic2\""));
更新:
您可以通过这种方式将变量用作键。
var newKey1 = "DynamicKey1";
requestBody.alliances[newKey1] = requestBody.alliances.xyz;
var newKey2 = "DynamicKey2";
requestBody.alliances[newKey1].environments[newKey2] = requestBody.alliances[newKey1].environments.abc;
在下面的 JSON 中,我想将 KEYS xyz 和 abc 替换为我通过以下语句从表单中获取的 alliance 和 env 的动态值,将引号中的单词 abc 替换为直下面的对象名称给我一个错误。有什么方法可以实现吗?
var env = g_form.getValue('vpc_environment_type');
var alliance = g_form.getValue('alliance_business_unit');
var team = g_form.getVal`enter code here`ue('alliance_segment_team_name_df_ingestion');
var project = g_form.getValue('project_name_gcp_df_ingestion_npe');
var requestBody = {
"format_version": "0.2.19",
"alliances": {
"xyz": {
"environments": {
"abc": {
"teams": {
"dna": {
"action": "edit",
"team": "dna",
"projects": {
"xxxx": {
"project": "xxxxx",
"cost_center": "0",
"custom_iam_policies": [],
"iam": {
"dev_group_email_name": "123",
"view_group_email_name": "456",
"sre_admin_group_email_name": "789"
},
"allowed_apis": [
"123",
"123"
],
"networks": {
"xxxxx": {
"flags": [
"VM"
],
"region": "123,
"preferred-suffix" : "123"
}
}
}
}
}
}
}
}
}
}
};
requestBody = new global.JSON().encode(requestBody);
console.log(requestBody);
尝试这样的事情。请注意,您不能只重命名 JavaScript 对象中的键,您需要添加一个具有新名称的新键并在不需要时删除旧键。另请注意,当您删除旧密钥时,如果数据发生变化,您可能会删除新密钥中的值。
var alliance = g_form.getValue('alliance_business_unit');
requestBody.alliances[alliance] = requestBody.alliances.xyz;
这将在与从 g_form.getValue('alliance_business_unit');
对 env 也同样如此。
动态赋值是这样完成的
object[variable] = value;
如果你的变量有值测试,你将有一个像这样的对象
{test: 'your value' }
Stringify > 替换 > 转换为 JSON
您需要用您想要的键替换字符串:Dynamic1 和 Dynamic2。
requestBody = JSON.parse(JSON.stringify(requestBody).replace("\"xyz\"","\"Dynamic1\"").replace("\"abc\"","\"Dynamic2\""));
更新: 您可以通过这种方式将变量用作键。
var newKey1 = "DynamicKey1";
requestBody.alliances[newKey1] = requestBody.alliances.xyz;
var newKey2 = "DynamicKey2";
requestBody.alliances[newKey1].environments[newKey2] = requestBody.alliances[newKey1].environments.abc;