2013-10-22 3 views
0

내가 가진이 같은 JSON :문자열 접두어없이 JSON 값을 취득

VAR X = { "foo는 : 막대": "XYZ"};

x [ "foo : bar"]를 호출하여 xyz를 얻을 수 있지만 foo 접두사를 제거하고 xoo를 얻으려면 어쨌든 존재합니까? x [ "bar"] 같은 것? json은 네임 스페이스가있는 XML에서 변환됩니다. 변경할 수 없습니다. 감사합니다

+2

키가 'bar' 만되도록 JSON을 만드십시오. –

+0

"그냥 정의"는 무엇을 의미합니까? 누가 json을 창작합니까? 그것이 당신이라면 @JustinWood 조언을 따르고 출력 방법을 수정하십시오. –

+0

json은 네임 스페이스가있는 xml에서 변환됩니다. 변경할 수 없습니다. ( – Duc

답변

2

당신은 속성 이름을 반복 제거 접두사 수 있습니다

function removePrefix(x){ 
    var temp = {}; 
    for(var key in x){ 
     temp[key.substr(key.indexOf(':')+1)] = x[key]; 
    } 
    return temp; 
} 

var x = {"foo:bar":"xyz"}; 

x = removePrefix(x); 

console.log(x['bar']); // xzy 
console.log(x.bar); // xyz 
+0

json의 구조가 더 복잡한 경우 예 : 자식과 배열이 있습니까? – Duc

0

당신은 같을 것이다 JSON 문자열을 만들 것입니다 :

var x = {"foo":"xyz"}; 

현재 키 : "foo:bar"가 키의 일부, JSON에서 특별한 의미를 가지고 있지 않습니다.

0

프로덕션 환경에서을 @MrCode (또는 귀하의 질문의 첫 번째 주석)과 함께 할 것입니다하지만 당신은 단지가 발생하는 경우 조금만 더 재미있게 놀아보세요.

var x = {"foo:bar":"xyz"}; 

for(i in x){ 
    if(x.hasOwnProperty(i)){ 
     var m = /^foo:(.*)$/.exec(i); 
     if(m.length) x.__defineGetter__(m[1], function(){ 
      return this['foo:'+m[1]]; 
     }); 
    } 
} 

console.log(x.bar); // "xyz" 
관련 문제