2012-01-17 9 views
0

javascriptオブジェクトを文字列に直接変換したい。私は次のコードを使用しました。JavascriptオブジェクトをJSON文字列に変換する

var foo = {}; 
foo.test1 = test1; 
foo.test2 = test2; 
foo.test3 = test3; 

var jsonObj = JSON.stringify(foo); 

正常に動作しますが、json2のjavascriptライブラリが使用されます。しかし、私はこのライブラリを使用せずに単純なjavascriptでこれを行う必要があります。渡されたパラメータを使用してjsonフィードを作成することは、このように動作します。

var jsonObj = "{\"test1\":\"" + test1+ "\",\"test2\":\"" + test2+ "\",\"test3\":\"" + test3+ "\"}"; 

しかし渡されたパラメータ(TEST1、TEST2およびTEST3)は、それが問題を持っています二重引用符が含まれている場合。

これを達成するための最良の方法は何ですか?

はあなたがそれぞれのキーとメンバーにString.replace(/"/g, "\\\"")を行うことで、二重引用符をエスケープする必要があり、あなたに

+1

ライブラリを使用できないのはなぜですか?特に、json2.jsのように小さくて特殊なものが1つです。 – Quentin

+1

実際には、他のコードと一緒にjson2.jsのミニバージョンを張っておくこともできます。別のファイルに保存する必要はありません。 –

+0

非常に古いブラウザ(または静止画2001のように構築されたブラウザ)のサポートを計画していない場合は、json2.jsを含める必要はありません。 – techfoobar

答えて

2

ありがとうございます。ただし、これを行うには、JSオブジェクトに単純な文字列/数字しか持たないことを保証する必要があります。

FYIでは、json2ライブラリは、JSONのネイティブ実装が存在しない場合にのみ使用されることに注意してください。 all modern browsersにはJSONサポートビルドが組み込まれています(IE < 8は注目に値する例外です)。

+1

文字列に改行が含まれていると失敗します – Quentin

+2

なぜ正規表現で二重引用符をエスケープしていますか?彼らは特別な意味を持っていないので、ラインノイズが追加されます。 – Quentin

+1

@クエンティン:それは以前の文字列だったので、正規表現に変更したときにそれを削除するのを忘れてしまった;) – Matt

1

あなたはJSONが何か誤解していると思います。 JSONはJavascript Object Notationの略です。

fooは既にオブジェクトであり、実際にはjsonObjにアクセスするためにコーディングするものを考えていますか?

ここにヒントがありますjsonObj.test1:それはよくわかりません。

JSONコンテンツのように見えるが実際にはオブジェクトではない文字列を作成しようとしている可能性があります。しかしそれは別の質問です。

これが役に立ちます。

+0

はいjson – Dilshan

+1

のような文字列を作成しようとしていますので、オブジェクトのように 'jsonObj'を使用していないと仮定できますか?あなたはスクリーンに何かを印刷するだけでしょうか? – T9b

+0

プロパティを読み取る必要があります – Dilshan

関連する問題