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

时间:2014-01-31 13:03:06

标签: javascript jquery

我有像

这样的动态JSON对象
var obj = {
             "name":{
                  "fname" : "David",
                  "lname" : "Seb"
                  },
            "place" : "XXX",
            "country":{
                  "name" : "YYY",
                  "info":{
                          "key":"ZZZ"
                   }
            }
}

我想在每个值中添加一些类似“new”的文本。

结果:

var obj = {
             "name":{
                  "fname" : "Davidnew",
                  "lname" : "Sebnew"
                  },
            "place" : "XXXnew",
            "country":{
                  "name" : "YYYnew",
                  "info":{
                          "key":"ZZZnew"
                   }
            }
}

任何人都可以告诉我们如何实现这一目标。

2 个答案:

答案 0 :(得分:0)

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

此函数将递归循环遍历该对象,将“new”附加到它找到的任何字符串。

警告:它不会克隆对象,原始对象将被修改(我认为)。

答案 1 :(得分:0)

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