Заменить ключи JSON в JavaScript - PullRequest
2 голосов
/ 13 декабря 2010

Допустим, у меня есть объект JSON, такой как

var myjson = {
   "com.mycompany.top.Element" : {
      "com.mycompany.top.count" : 10,
      "com.mycompany.top.size" : 0
      ....
   }
};

И я хочу заменить точки / точки в ключах двоеточием, чтобы JSON стал:

var myjson = {
   "com:mycompany:top:Element" : {
      "com:mycompany:top:count" : 10,
      "com:mycompany:top:size" : 0
      ....
   }
};

JSON2 от Doublos Crockford просто заменяет значения, а не ключи. Интересно, кто-нибудь еще написал регулярное выражение или парсер для замены текста, составляющего ключ?

1 Ответ

10 голосов
/ 14 декабря 2010

Вы можете использовать эту рекурсивную функцию:

function rewriteProperties(obj) {
    if (typeof obj !== "object") return obj;
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            obj[prop.replace(/\./g, ":")] = rewriteProperties(obj[prop]);
            if (prop.indexOf(".") > -1) {
                delete obj[prop];
            }
        }
    }
    return obj;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...