Javascript 如何更改所有嵌套的json值?
我有动态JSON对象,比如Javascript 如何更改所有嵌套的json值?,javascript,jquery,Javascript,Jquery,我有动态JSON对象,比如 var obj = { "name":{ "fname" : "David", "lname" : "Seb" }, "place" : "XXX", "country":{ "name" : "YYY", "info
var obj = {
"name":{
"fname" : "David",
"lname" : "Seb"
},
"place" : "XXX",
"country":{
"name" : "YYY",
"info":{
"key":"ZZZ"
}
}
}
我想在每个值中添加一些新的文本
结果:
谁能告诉我如何做到这一点
;(function appendNew(obj){
for (var i in obj) {
if (typeof obj[i] === 'string') {
obj[i] += 'new';
} else if (typeof obj[i] === 'object') {
obj[i] = appendNew(obj[i]);
}
}
return obj;
})(obj);
此函数将递归地循环对象,将新字符串追加到它找到的任何字符串中
警告:它不会克隆对象,我想原始对象会被修改。递归和循环的混合?试试看。这不是JSON,这是Javascript。
function traverse(json, ref, k) {
if(typeof json == "object") {
$.each(json, function(k, v) {
traverse(v, json, k);
});
} else if(typeof json == "string") {
ref[k] = json + "new";
}
}
traverse(obj, null, null);
function traverse(json, ref, k) {
if(typeof json == "object") {
$.each(json, function(k, v) {
traverse(v, json, k);
});
} else if(typeof json == "string") {
ref[k] = json + "new";
}
}
traverse(obj, null, null);