zu finden versucht, wie {foo:"bar"}
von ?...&foo=bar&...
zu machen, aber googeln und bekam nur jQuery.params
die das Gegenteil der Fall ist. Irgendwelche Vorschläge bitte (eingebaute JavaScript-Funktion, jquery, underscore.js - alles geht)? Oder muss ich es selbst implementieren (kein großer Aufwand, nur nicht das Rad neu erfinden)?Deserialize Query-String zu JSON-Objekt
8
A
Antwort
4
Sie haben Ben Alman jQuery BBQ
und jQuery.deparam
drin. Es wird beschrieben, wie The opposite of jQuery.param, pretty much.
http://benalman.com/code/projects/jquery-bbq/examples/deparam/
Erstes Beispiel ist genau das, was Sie brauchen.
6
Ich poste hier meine Funktion, nur für den Fall, dass andere aussehen wird und will es direkt zu bekommen keine Notwendigkeit für Jquery native JS. Weil ich für die gleiche Sache gesucht und schließlich machte diese Funktion nach anderen Antworten angezeigt:
function queryStringToJSON(queryString) {
if(queryString.indexOf('?') > -1){
queryString = queryString.split('?')[1];
}
var pairs = queryString.split('&');
var result = {};
pairs.forEach(function(pair) {
pair = pair.split('=');
result[pair[0]] = decodeURIComponent(pair[1] || '');
});
return result;
}
console.log(queryStringToJSON(window.location.href));
console.log(queryStringToJSON('test=1&check=wow'));//Object {test: "1", check: "wow"}
6
Tatsächlich ist die oben genannte Antwort von @talsibony nimmt nicht berücksichtigt Query-String-Arrays (wie test=1&test=2&test=3&check=wow&such=doge
). Dies ist meine Implementierung:
function queryStringToJSON(qs) {
qs = qs || location.search.slice(1);
var pairs = qs.split('&');
var result = {};
pairs.forEach(function(p) {
var pair = p.split('=');
var key = pair[0];
var value = decodeURIComponent(pair[1] || '');
if(result[key]) {
if(Object.prototype.toString.call(result[key]) === '[object Array]') {
result[key].push(value);
} else {
result[key] = [ result[key], value ];
}
} else {
result[key] = value;
}
});
return JSON.parse(JSON.stringify(result));
};
1
für die einfache und flache Abfrage-Strings, so etwas wie dies
const queryStringToObject = (queryString) => {
let obj = {}
if(queryString) {
queryString.slice(1).split('&').map((item) => {
const [ k, v ] = item.split('=')
v ? obj[k] = v : null
})
}
return obj
}
Verwandte Themen
- 1. Warum leitet SimpleHTTPServer zu? Querystring/wenn ich frage? Querystring?
- 2. Deserialize JSON zu Java Enum
- 3. C# Deserialize XML zu Objekt
- 4. QueryString-Überprüfung
- 5. Hinzufügen von Querystring-Parameter zu link_to
- 6. Hinzufügen von Querystring-Parameter zu GridView ItemTemplate
- 7. Deserialize JSON
- 8. Deserialize XML zu Objekt mit Symfony2
- 9. Deserialize Json der Immobilie Immobilie zu Immobilie
- 10. Serialize und Deserialize Multidimensional Array zu JSON
- 11. Deserialize JSON zu Object in einem Konstruktor
- 12. Deserialize JSON Zeichenfolge zu C# Objekt
- 13. deserialize json zu Array von Entitäten
- 14. JSON Deserialize zu konstruierten geschützten Setter-Array
- 15. Deserialize JSON mit GSON zu Enum
- 16. deserialize JSON zu Java mit polymorphen Mitgliedern
- 17. Deserialize XML Response String zu C# Klasse
- 18. Deserialize XML-Elementpräsenz zu bool in C#
- 19. jackson deserialize unbekannter Eigenschaftsname zu benutzerdefinierter Entität
- 20. Serialize und Deserialize Dictionary zu binär
- 21. urlencode alle Querystring-Parameter
- 22. querystring in asp.net
- 23. IE6 Verlieren von Querystring
- 24. Querystring umleiten? darin .htaccess
- 25. Testen von QueryString
- 26. RouteValues vs QueryString MVC?
- 27. URL Rewrite Sprache Querystring
- 28. asp.net MVC QueryString
- 29. Querystring mit xslt
- 30. asp.net Kontrolle querystring
auch den Trick hier geht: http://stackoverflow.com/questions/901115/get -query-string-values-in-javascript. Eine kleine Suche hilft immer. – ggozad
@ggozad: nach einer * Umwandlung in JSON/Objekt * gesucht, nicht nur * Werte erhalten *. Danke für den Link! Leider ist diese Funktion irgendwo in jQuery nicht üblich. – BreakPhreak