如何使用javascript中数组格式的json数据更新作为变量传递的json密钥?
下面是我的json内容如何使用javascript中数组格式的json数据更新作为变量传递的json密钥?,javascript,json,Javascript,Json,下面是我的json内容 { "demoPO":{ "login":["demoJPLog in", "demoFRLog in","GELog in"], "cancel":["demoJPCancel", "demoFRcancelo","GEcancelo"], &quo
{
"demoPO":{
"login":["demoJPLog in", "demoFRLog in","GELog in"],
"cancel":["demoJPCancel", "demoFRcancelo","GEcancelo"],
"content":["demoJPcontent", "demoFRcontent","GEcontent"]
},
"demoPO2":{
"login":["JPLog in", "FRLog in","GELog in"],
"cancel":["JPCancel", "FRcancelo","GEcancelo"],
"content":["JPcontent", "FRcontent","GEcontent"],
"submit":["JPsubmit", "FRsubmit","GEsubmit"]
}
}
我想更新keydemPO2的值。登录[0]
data.demoPO2.login[0] = value; //this updates key - works
consider user is passing **key** as a variable
var keyName = 'demPO2.login[0]'
data[keyname] = value; //doesn't update, adds a new one
有没有一种方法可以克服这个问题,用户可以将key作为变量传递,并在json中存在多级数组时进行更新?您应该将key中元素的路径提取为
[“demPO2”,“login”,“0”]
,然后循环它:
var json={
“demoPO”:{
“登录”:[“demoJPLog in”、“demoFRLog in”、“GELog in”],
“取消”:[“demoJPCancel”、“demoFRcancelo”、“GEcancelo”],
“内容”:[“demoJPcontent”、“demoFRcontent”、“GEcontent”]
},
“demoPO2”:{
“登录”:[“JPLog in”、“FRLog in”、“GELog in”],
“取消”:[“JPCancel”、“FRcancelo”、“GEcancelo”],
“内容”:[“JPcontent”、“FRcontent”、“GEcontent”],
“提交”:[“JPsubmit”、“FRsubmit”、“GEsubmit”]
}
};
函数提取(键){
var keys=key.split('.');
var-current=json;
对于(变量i=0;i log(extract('demoPO2.key.notExists')
您可以使用lodash
\uu.set
方法
从“洛达斯”进口
_.set(数据,“demoPO2.login[0],“test1”) 这里的钥匙是什么?您正在更新数组而不是对象。如果您通过demPO2,这很好,但是通过demPO2.login[0]作为密钥不是一个可行的解决方案谢谢,但这里它正在提取密钥,但我的要求是更新密钥的值