[解決済み] FormData(HTML5オブジェクト)をJSONに変換する方法
質問
HTML5で作成されたエントリーを、どのように変換すればよいですか?
FormData
オブジェクトをJSONに変換できますか?
このソリューションでは、jQueryを使用するべきではありません。また、単純にすべての
FormData
オブジェクトのキー/バリュー・エントリのみです。
どのように解決するのですか?
を使用することもできます。
forEach
の上に
FormData
オブジェクトを直接指定します。
var object = {};
formData.forEach(function(value, key){
object[key] = value;
});
var json = JSON.stringify(object);
UPDATE
また、同じ解決策を ES6 矢印関数 :
var object = {};
formData.forEach((value, key) => object[key] = value);
var json = JSON.stringify(object);
UPDATE 2:
また、マルチセレクトリストや複数の値を持つ他のフォーム要素をサポートしたい人のために (この問題に関する回答の下に非常に多くのコメントがあるので、可能性のある解決策を追加します) :
var object = {};
formData.forEach((value, key) => {
// Reflect.has in favor of: object.hasOwnProperty(key)
if(!Reflect.has(object, key)){
object[key] = value;
return;
}
if(!Array.isArray(object[key])){
object[key] = [object[key]];
}
object[key].push(value);
});
var json = JSON.stringify(object);
フィドルはこちら このメソッドを単純な複数選択リストで使用するデモを行います。
アップデイト3。
ここで終わる人のための余談ですが、フォームデータを json に変換する目的が XML HTTP リクエストでサーバーに送信することである場合は
FormData
オブジェクトを変換せずに直接指定します。このように簡単です。
var request = new XMLHttpRequest();
request.open("POST", "http://example.com/submitform.php");
request.send(formData);
参照 また FormDataオブジェクトの使用 参考までにMDNに掲載 :
UPDATE 4:
私の回答の下のコメントで述べたように、JSONの
stringify
メソッドは、すべてのタイプのオブジェクトに対してすぐに動作するわけではありません。どのようなタイプがサポートされているかについては、以下を参照してください。
の MDN ドキュメントの Description セクションを参照してください。
JSON.stringify
.
説明文にはこうも書かれている。
valueにtoJSON()メソッドがある場合、どのようなデータをシリアライズするかを定義する責任があります。
つまり、自分で用意した
toJSON
シリアライゼーションメソッドに、カスタムオブジェクトをシリアライズするためのロジックを追加します。このように、より複雑なオブジェクトツリーに対するシリアライズサポートを迅速かつ容易に構築することができます。
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] JSON文字列を安全にオブジェクトに変換する
-
[解決済み] JSオブジェクトをJSON文字列に変換する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み] テスト
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する