オブジェクトをJSON文字列に変換


122

jQuery.parseJSON('{"name":"John"}')文字列表現をオブジェクトに変換しますが、その逆が必要です。オブジェクトは、私がリンクだJSON文字列に変換されるhttp://www.devcurry.com/2010/03/convert-javascript-object-to-json.htmlを それはjson2.jsを持っている必要がありますjQueryのネイティブを持っていませんこれを行う方法?


回答:


188

jQueryは、ネイティブブラウザメソッドを呼び出す前に、一部の正規表現チェックのみを行いwindow.JSON.parse()ます。それが利用できない場合は、Javascriptオブジェクトを作成するために、eval()より正確new Function()に使用します。

反対JSON.parse()IS JSON.stringify()文字列にJavaScriptオブジェクトをシリアライズします。jQueryにはそのための独自の機能はありません。ブラウザの組み込みバージョンを使用するかjson2.jshttp://www.json.orgから入手する必要があります

JSON.stringify() はすべての主要なブラウザーで使用できますが、古いブラウザーと互換性を保つには、そのフォールバックが必要です。


4
これは役立つ場合があります:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger

2
@tekretic:私はあなたがトローリングしていることを望みます。ChromeはJSON1日目からホストオブジェクトを実装します
jAndy

5
@jAndy:すごい、すみません。トローリングではなく、OHが間違っています。2009年半ばにWebKitにネイティブJSONサポートが追加され、Chrome 3.0以降でサポートされるようになりました。以前の完全に不正確なコメントは、この古い質問の半分と、現在取り組んでいるCMSを組み合わせたもので、実際にはwindow.JSONを独自のライブラリに置き換えてJSON.stringify()います。つまり、定義されていません。すべての点でかなり失敗。
Molomby 2012


1
@jAndy:混乱しないでください。:JSON.stringify「serialises」オブジェクトは、そのわずかのミスと言ってください
halfbit

12

デバッグ目的でObject.toSource()も役立ちます。デバッグ目的でオブジェクトとそのプロパティを表示します。これは一般的なJavaScript(jQueryではない)関数ですが、「モダン」ブラウザでのみ機能します。


4

JavaScriptオブジェクトをJSONデータに変換する

$("form").submit(function(event){
  event.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
  consol.log(jsonConvertedData);
});

http://jsonlint.comを使用してjsonデータを検証できます


2

優れたjquery-Jsonプラグインを使用できます。

http://code.google.com/p/jquery-json/

Jsonオブジェクトとの間の変換を簡単にします。


2
アドオンロジックライブラリよりもSPLメソッドをお勧めします。
David J Eddy

2
SPL =標準PHPライブラリ。この場合の推測はSJL(標準のJavaScriptライブラリ)です。
David J Eddy

3
問題は、jQueryとJavaScriptについてです。PHP、PHPライブラリ、SPLとは関係ありません。
ジョージフィリパコス2013年

3
標準ライブラリは標準ライブラリです。言語は関係ありません。私のポイントは、「このプラグインを使用する」症候群よりも言語を教えるソリューションを推奨する方が良いということです。
David J Eddy

1
まさに、車輪を再発明する理由...「プラグイン」よりも言語の標準的な能力を使用するが、私は余談です。
David J Eddy 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.