Ich habe einen String wie diesen:
abc=foo&def=%5Basf%5D&xyz=5
Wie kann ich sie in ein JavaScript-Objekt wie dieses umwandeln?
{
abc: 'foo',
def: '[asf]',
xyz: 5
}
Ich habe einen String wie diesen:
abc=foo&def=%5Basf%5D&xyz=5
Wie kann ich sie in ein JavaScript-Objekt wie dieses umwandeln?
{
abc: 'foo',
def: '[asf]',
xyz: 5
}
Verwendung von ES6, URL API und URLSearchParams API.
function objectifyQueryString(url) {
let _url = new URL(url);
let _params = new URLSearchParams(_url.search);
let query = Array.from(_params.keys()).reduce((sum, value)=>{
return Object.assign({[value]: _params.get(value)}, sum);
}, {});
return query;
}
Eine einfache Antwort mit eingebautem nativen Node-Modul (keine npm-Module von Dritten)
Das Modul querystring bietet Dienstprogramme zum Parsen und Formatieren von URL-Abfragezeichenfolgen. Es kann mit aufgerufen werden:
const querystring = require('querystring');
const body = "abc=foo&def=%5Basf%5D&xyz=5"
const parseJSON = querystring.parse(body);
console.log(parseJSON);
Soweit ich weiß, gibt es keine native Lösung. Dojo hat eine eingebaute unserialization-Methode, wenn Sie dieses Framework zufällig verwenden.
Andernfalls können Sie es ganz einfach selbst implementieren:
function unserialize(str) {
str = decodeURIComponent(str);
var chunks = str.split('&'),
obj = {};
for(var c=0; c < chunks.length; c++) {
var split = chunks[c].split('=', 2);
obj[split[0]] = split[1];
}
return obj;
}
edit: decodeURIComponent() hinzugefügt
/**
* Parses and builds Object of URL query string.
* @param {string} query The URL query string.
* @return {!Object<string, string>}
*/
function parseQueryString(query) {
if (!query) {
return {};
}
return (/^[?#]/.test(query) ? query.slice(1) : query)
.split('&')
.reduce((params, param) => {
const item = param.split('=');
const key = decodeURIComponent(item[0] || '');
const value = decodeURIComponent(item[1] || '');
if (key) {
params[key] = value;
}
return params;
}, {});
}
console.log(parseQueryString('?v=MFa9pvnVe0w&ku=user&from=89&aw=1'))
see log
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.