Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改所有嵌套的json值?_Javascript_Jquery - Fatal编程技术网

Javascript 如何更改所有嵌套的json值?

Javascript 如何更改所有嵌套的json值?,javascript,jquery,Javascript,Jquery,我有动态JSON对象,比如 var obj = { "name":{ "fname" : "David", "lname" : "Seb" }, "place" : "XXX", "country":{ "name" : "YYY", "info

我有动态JSON对象,比如

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);