Intenté encontrar cómo hacer {foo:"bar"}
desde ?...&foo=bar&...
pero busqué en Google y obtuve solo el jQuery.params
que hace lo contrario. Cualquier sugerencia por favor (función incorporada javascript, jquery, underscore.js - todo va)? ¿O necesito implementarlo solo (no es una gran molestia, solo estoy tratando de no reinventar la rueda)?Deserializar cadena de consulta al objeto JSON
8
A
Respuesta
4
Tiene Ben Alman's jQuery BBQ
y jQuery.deparam
en él. Se describe como The opposite of jQuery.param, pretty much.
http://benalman.com/code/projects/jquery-bbq/examples/deparam/
primer ejemplo es exactamente lo que necesita.
6
Estoy publicando aquí mi función por si acaso se verá otra y querrá verla de manera directa sin necesidad de jquery native JS. Debido a que estaba buscando lo mismo y finalmente hice esta función después de ver otras respuestas:
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
En realidad la respuesta anterior por @talsibony no tiene en cuenta las matrices de cadenas de consulta (como test=1&test=2&test=3&check=wow&such=doge
). Este es mi aplicación:
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
de cadenas de consulta simple y plana, algo como esto hará el truco
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
}
Cuestiones relacionadas
- 1. deserializar JSON al objeto JavaScript
- 2. Deserializar cadena JSON a C# objeto
- 3. Cadena JSON al objeto JS
- 4. Convierte cadena al objeto JSON
- 5. Deserializar JSON recursivamente a IDictionary <cadena, objeto>
- 6. Deserializar JSON en objeto existente (Java)
- 7. Analizando la cadena JSON al objeto .NET
- 8. Cómo deserializar un JObject al objeto .NET
- 9. Serializar/deserializar objeto-gráfico PHP a JSON
- 10. Convertir cadena de consulta del/al objeto
- 11. C# Deserializar XML al objeto
- 12. convertir una cadena json al objeto python
- 13. .Net simplejson: Deserialize JSON al objeto dinámico
- 14. Deserializar JSON con C#
- 15. deserializar json field en cadena simple con gson
- 16. Cacao: deserializar json cadena a objetos personalizados (no NSDictionary, NSArray)
- 17. Objeto JSON en la cadena
- 18. Deserializar cadena JSON en C# sin usar el reflejo
- 19. Deserializar JSON a un objeto anónimo utilizando JSON.NET
- 20. NancyFX: Deserializar JSON
- 21. ¿Cómo deserializar la matriz JSON?
- 22. Convertir cadena JSON en el objeto JSON
- 23. Convierta objeto en cadena JSON
- 24. Error al deserializar Xml al objeto - xmlns = '' no se esperaba
- 25. ¿Puedo deserializar json al tipo anónimo en C#?
- 26. Deserializar Objetos JSON en Asp.Net MVC Controller
- 27. Convertir objeto de cadena JSON en C#
- 28. Codificación de objeto JavaScript a cadena Json
- 29. Json Convertir a y desde cadena de consulta con jquery?
- 30. Deserializar XML al objeto (necesita devolver una lista de objetos)
así que aquí tienes: http://stackoverflow.com/questions/901115/get -query-string-values-en-javascript. Una pequeña búsqueda siempre ayuda. – ggozad
@ggozad: buscó una conversión * en JSON/objeto *, no solo * obteniendo valores *. ¡Gracias por el enlace! lamentablemente esta función no es estándar en algún lugar de jQuery más o menos. – BreakPhreak