[解決済み] URLパラメータをJavaScriptのオブジェクトに変換する方法は?[重複しています]。
2022-03-16 15:41:26
質問
こんな文字列があるんです。
abc=foo&def=%5Basf%5D&xyz=5
このようにJavaScriptのオブジェクトに変換するにはどうしたらよいでしょうか?
{
abc: 'foo',
def: '[asf]',
xyz: 5
}
解決方法は?
2021年には... 時代遅れとお考えください。
編集
この編集は、コメントに基づいて答えを改善し、説明します。
var search = location.search.substring(1);
JSON.parse('{"' + decodeURI(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')
例
構文解析
abc=foo&def=%5Basf%5D&xyz=5
を5つのステップで説明します。
- decodeURI: abc=foo&def=[asf]&xyz=5
- 引用符のエスケープ:引用符がないため同じ
-
&を置き換える。
abc=foo","def=[asf]","xyz=5
-
置き換え=。
abc":"foo","def":"[asf]","xyz":"5
-
カーリーや引用符で囲む。
{"abc":"foo","def":"[asf]","xyz":"5"}
であり、合法的なJSONである。
An 改良型ソリューション は、検索文字列の文字数を増やすことができます。URIのデコードにリバイバー関数を使用しています。
var search = location.search.substring(1);
JSON.parse('{"' + search.replace(/&/g, '","').replace(/=/g,'":"') + '"}', function(key, value) { return key===""?value:decodeURIComponent(value) })
例
search = "abc=foo&def=%5Basf%5D&xyz=5&foo=b%3Dar";
与える
Object {abc: "foo", def: "[asf]", xyz: "5", foo: "b=ar"}
オリジナル回答
一発芸です。
JSON.parse('{"' + decodeURI("abc=foo&def=%5Basf%5D&xyz=5".replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}')
関連
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(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 実装 サイバーパンク風ボタン
おすすめ
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
vueのグローバルがscss(mixin)を導入。
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み】「GET」パラメータから値を取得する(JavaScript)【重複】。