2012-03-06 4 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 *または* from * JSON?私。あなたはJSONを持っていて、それをJavaScriptオブジェクトに変換する必要があります。 –

+0

[JavaScriptの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を読みやすくします。 1つの行または1つの列に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/

関連する問題