2011-07-28 12 views
1

現在、APIからJSONを受け取るJavaScriptアドオンを開発中です。これまでのところ、JSONを取得してからeval()を使用して、このJSONをJavaScriptオブジェクトに変換しています。これが問題の始まりです。JSONからJavaScriptオブジェクト#textプロパティ

JSONには「#text」プロパティが含まれています。私はJavaScriptオブジェクトを評価し、この '#text'プロパティも持っていますが、ハッシュタグ付きの変数は受け入れられないため、プロパティを呼び出すことはできません。

私は2つの可能な解決策を(配列に変換したり、HASTタグを削除するeval()を使用して)知っているが、私は、プロパティを呼び出すことを好むだろう。何か案は?ありがとう。

+1

必要がない限り、evalは使用しないでください。遅い解決策であるにもかかわらず、それはあまり安全ではありません。特に、通常は非常に多くのネイティブなJSONメソッドがあると考えています。第2に、 '#blah 'という名前のプロパティが完全に有効なので、あなたの質問を明確にしてください。 – davin

+0

次のようなこともできます: 'var textName = '#text';警告(obj [textName]); '。 – RobG

答えて

3

特にこれにはevalを使用しないでください。あなたはjsonパーサですが、現代のブラウザにはすでにそれらがあります。

var myObj = JSON.parse(returnFromServer); 
console.log(myObj.firstProperty); // etc 

はここで何か他のものでハッシュ記号を交換するようにeval前json2 http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js

1

ものを行うためのCDNリンクです。

var obj = {'#foo': 'bar'}; 
obj['#foo']; // 'bar' 

実際、obj.#foo(すなわち、構文エラーが発生します)は無効であるが、上記の方法は、微細である:

9

あなたは角括弧でオブジェクトのプロパティを参照することができます。

また、必要がない限り、evalは使用しないでください。通常は非常に多くのネイティブなJSONメソッドがあることを考慮すると、より安全ではありません。ネイティブメソッドが存在しない場合、多くのJSONライブラリはしか導入しません。

関連する問題