2010-12-13 6 views
1

Disons que j'ai un objet JSON commeRemplacer les clés JSON en javascript

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

Et je veux remplacer les points/périodes dans les touches avec deux points de sorte que le JSON devient:

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

Le JSON2 de Doublos Crockford ne fait que remplacer les valeurs et non les clés. Je me demandais si quelqu'un d'autre avait écrit une expression rationnelle ou un analyseur pour remplacer le texte constituant la clé?

+0

traitez-vous avec JSON, ou un objet JavaScript réel? Ce sont des choses différentes. –

Répondre

10

Vous pouvez utiliser cette fonction récursive:

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; 
} 
+0

Parfait ... merci pour l'aide –

+0

Merci pour ça! –