2010-12-13 51 views
1

比方說,我有一個像替換鍵JSON在JavaScript

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

一個JSON對象,我想更換點/用冒號鍵時期,因此JSON變爲:

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

來自Doublos Crockford的JSON2只是取代了不是鍵的值。想知道是否有人用hade寫了一個正則表達式或解析器來替換構成密鑰的文本?

+0

你對付JSON或一個實際的JavaScript對象?他們是不同的東西。 – 2010-12-13 20:59:37

回答

10

您可以使用此遞歸函數:

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

完美...感謝您的幫助 – 2010-12-14 07:35:16

+0

感謝您的支持! – 2011-12-15 13:16:40