2011-08-28 5 views
1

내가 JSON 문자열로 varialbe 이름을 구문 분석하고 싶습니다 :JSON 자바 스크립트와 변수

JSON :

{ 
    "items": [ 
     { 
      "id": "2000", 
      "buttons": [{ 
       "text": systemvar.continue, 
      }] 
     } 
} 

systemvar.continue가 자바 스크립트에 정의되어 있습니다.

Javascript 변수를 사용하려면 JSON 코드를 어떻게 작성해야합니까?

아이디어가 있으십니까?

최고 Kurt

+2

이것은 유효한 JSON이 아닙니다. –

답변

0

JSON은 JavaScript의 구문 중 안전하고 제한적인 하위 집합입니다. 을 허용하려는 경우 잠재적으로 안전하지 않은 것을 포함하여 JavaScript 구문을 JSON.parse() 대신 eval()으로 사용하십시오.

{ 
    "items": [ 
     { 
      "id": "2000", 
      "buttons": [{ 
       "text": "continue", // <-- only pass the property name 
      }] 
     } 
} 

을 그리고 대괄호 표기법을 사용 systemvar"continue" 속성에 액세스 : systemvar.continue는 자바 스크립트에 정의되어있는 경우

3

,이처럼 JSON이 유효합니다. 이 하드 코드 및 구문 분석 JSON을지지 물론

var result = systemvar[ json.items[0].buttons[0].text ]; 

json라는 변수에 참조됩니다. 나는 당신이 구조를 가로 지르고 있다고 가정하고 어떤 시점에서 text:"continue"을 찾을 것입니다. 도착하면 속성 이름으로 연결하십시오.

// in traversal 
systemvar[ val.text ]; 

나는 그것을 예약어이기 때문에이 대괄호 문자열로 작동하지만 당신이 단어 continue을하지 않는 것이도를 건의 할 것입니다.

0

사용할 수있는 것은 JSONP입니다.

클라이언트 측이 HTML 코드 것이다 :

<script> 
function readData(json_arr) { 
    //`json_arr` will be the javascript array. 
    //do whatever you want to do with the array here. 
} 
</script> 
<script src="your_server.example.com/getData?jsonp=readData"></script> 

를 그리고 서버는 반환 :

readData(
{ 
    "items": [ 
     { 
      "id": "2000", 
      "buttons": [{ 
       "text": systemvar.continue, 
      }] 
     } 
    } 
) 

참고이 반환 된 "JSON 배열이"자동으로 실행되는 것을 의미 브라우저의 자바 스크립트 엔진.

관련 문제