2017-05-07 6 views
1

一般的なJSON文字列ではない文字列からオブジェクトを作成しようとしています。ここでJavaScriptで文字列をオブジェクトに変換する

は一例です:

var ObjectInString = "{x:62.43993,y:293.64093}"; //string i want to turn into an object 
 
var ObjectWhichWorks = {x:62.43993,y:293.64093}; 
 

 
console.log(ObjectInString); 
 
console.log(ObjectWhichWorks);

+0

文字列をオブジェクトに変換するために 'JSON.parse(string)'を使用してください –

+1

[ここに記載されているのと同じ問題がありますか?](http://stackoverflow.com/questions/9637517/parsing-relaxed-json-without- eval)?そうであれば、これは複製です。そうでない場合は、その理由を説明してください。 –

+0

この質問に対する解決策は私のためには機能しません。 – AESTHETICS

答えて

0

はに文字列を変換し、あなたの鍵は常にxyあると仮定すると、これらのキーの周りに二重引用符を追加することで、有効なJSON文字列あなたはその後、目的のオブジェクトを取得するためにJSON.parse()を使用することができます。

var o = '{x:62.43993,y:293.64093}'; 
 

 
console.log(JSON.parse(o.replace('x', '"x"').replace('y', '"y"')));

+0

downvoteの理由は? –

+1

それは私ではありませんでした。私の問題を解決してくれてありがとう! – AESTHETICS

1

あなたは、文字列の内部でJavaScript式を解釈するevalを使用することができます。無効なステートメントではなく、オブジェクトリテラルとして正しく解析されるためには、この値をカッコで囲む必要があります。

var ObjectInString = "{x:62.43993,y:293.64093}"; 
 
var Object = eval("(" + ObjectInString + ")"); 
 

 
console.log(ObjectInString); 
 
console.log(Object);

しかし、は信頼できないデータでevalを使用すると、大規模なセキュリティ上の脆弱性です。唯一の完全に信頼されているソースからのデータでこれを行うと、あなたはできるだけ早くJSON.parse(...)で解析することができ、このような有効なJSONデータを使用するなどの選択肢(探してください。

0

を何年も前に私はこのsolutのためにたくさん検索イオン。

var obj = eval ("(" + ObjectInString + ")"); 

クロスブラウザのサポートやその他のことについてはわかりませんが、それは私にとってはうまくいくと思います。