2012-03-06 5 views
1

JSON으로 구문 분석되어야하는 문자열이 있고 Float32Array로 변환되어야하는 문자열이 있습니다. 문자열은 다음과 같습니다Javascript에서 문자열을 입력 된 배열로 변환

{"vertices":"[-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]"} 

배열은 배열이 부동 소수점 숫자로 구성하도록 예컨대 :

mesh.vertices = new Float32Array([-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]); 

가 어떻게 문자열을 변환 할 수 있습니다, 변수에 할당해야 하는가? 보안상의 이유로 eval()을 사용하고 싶지 않습니다.

+0

당신이 구문 분석 뜻이 * as * 또는 * JSON에서? 나는. JSON을 가지고 있고 JavaScript 객체로 변환하려고합니다. –

+0

[자바 스크립트에서 json을 구문 분석하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript) –

답변

2

당신은 JSON.parse 사용할 수 있습니다

mesh.vertices = new Float32Array(JSON.parse(myString).vertices); 

을 이렇게하면 의미가 가정된다

{"vertices":[-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]} 

당신이 (FWIW 조금 이상한 인)은 상기로 JSON이 실제로 있다면, 그것은 것 :

mesh.vertices = new Float32Array(JSON.parse(JSON.parse(myString).vertices)); 
+0

감사! 내가 제안한대로 [ "정점": [- 1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]}을 사용하겠습니다. – maria90

+0

"[array, items]"에 대한 좋은 이유가 있습니다. simplejson과 python을 사용할 때 json을 읽을 수있게 유지합니다. 한 행 또는 한 열에 10,000 개의 항목을 갖는 것이 효과적입니다. – noiv

1

JSON.parse을 사용하면 JSON 데이터를 안전하게 구문 분석 할 수 있습니다. 참조 https://developer.mozilla.org/En/Using_native_JSON

난 여전히 (다른 사람이 언급 한 바와 같이) 네이티브 JSON 파서를 사용하는 것이 좋습니다,하지만 여기에 매우 간단하고 제한적인 구현
0

:

var stringToParse = "{vertices:[-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]}"; 

Object.prototype.simpleParse = function() { 
    if (!(this instanceof String)) throw "Type mismatch"; 
    var re = /(\w+)[^:]+:\[([^\]]+)\]/g; 
    var keyvalues = re.exec(this.valueOf()); 
    var key = keyvalues[1]; 
    var values = keyvalues[2].split(","); 
    var arr = []; 
    for (val in values) { 
     var currentValue = (/-?\d+(.\d+)?/).exec(values[val])[0]; 
     arr.push(currentValue); 
    } 
    arr.pop(); 
    ret = {}; 
    ret[key] = new Float32Array(arr); 
    return ret; 
} 

console.log(stringToParse.simpleParse()); 

이 데모 : http://jsfiddle.net/mKWGH/

관련 문제