Created
December 10, 2011 03:29
-
-
Save AlbertoMonteiro/1454493 to your computer and use it in GitHub Desktop.
Json to formUrlencoded
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function jsonToFormUrlencoded(obj, currentLevel) { | |
var serialized = ""; | |
for (var item in obj) { | |
if (obj[item] instanceof Array) { | |
for (var i = 0; i < obj[item].length; i++) { | |
if (obj[item][i] instanceof Object) { | |
if (currentLevel) | |
serialized += jsonToFormUrlencoded(obj[item][i], "{0}.{1}[{2}]".format(currentLevel, item, i)) + "&"; | |
else { | |
serialized += jsonToFormUrlencoded(obj[item][i], "{0}[{1}]".format(item, i)) + "&"; | |
} | |
} else { | |
if (currentLevel) | |
serialized += "{0}.{1}[{2}]={3}&".format(currentLevel, item, i, obj[item][i]); | |
else | |
serialized += "{0}[{1}]={2}&".format(item, i, obj[item][i]); | |
} | |
} | |
} | |
else if (obj[item] instanceof Object) { | |
if (currentLevel) | |
serialized += jsonToFormUrlencoded(obj[item], "{0}.{1}".format(currentLevel, item)) + "&"; | |
else | |
serialized += jsonToFormUrlencoded(obj[item], item) + "&"; | |
} | |
else { | |
if (currentLevel) | |
serialized += "{0}.{1}={2}&".format(currentLevel, item, obj[item]); | |
else | |
serialized += "{0}={1}&".format(item, obj[item]); | |
} | |
} | |
return serialized.substr(0, serialized.length - 1).replace(/\s/g, "+"); | |
} | |
String.prototype.format = function () { | |
var format = this; | |
for (var i = 0; i < arguments.length; i++) { | |
format = format.replace('{' + (i) + '}', arguments[i]); | |
} | |
return format; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module('test'); | |
test('Posso transformar um json com uma propriedade simples em um form serializado', function () { | |
var model = { Nome: "Alberto" }; | |
equal(jsonToFormUrlencoded(model), 'Nome=Alberto'); | |
}); | |
test('Posso transformar um json com mais de uma propriedade simples em um form serializado', function () { | |
var model = { Nome: "Alberto", Idade: 21 }; | |
equal(jsonToFormUrlencoded(model), 'Nome=Alberto&Idade=21'); | |
}); | |
test('Posso transformar um json aninhando so com propriedades simples em um form serializado', function () { | |
var model = { | |
Nome: "Alberto", | |
Idade: 21, | |
Endereco: { | |
Logradouro: "Rua Paulino Nogueira", | |
Ap: { | |
Numero: 283 | |
} | |
} | |
}; | |
equal(jsonToFormUrlencoded(model), 'Nome=Alberto&Idade=21&Endereco.Logradouro=Rua+Paulino+Nogueira&Endereco.Ap.Numero=283'); | |
}); | |
test('Posso transformar um json que contenha propriedades do tipo array de objeto simples em um form serializado', function () { | |
var model = { | |
Nome: "Alberto", | |
Idade: 21, | |
Valores: [1, 2, 3] | |
}; | |
equal(jsonToFormUrlencoded(model), 'Nome=Alberto&Idade=21&Valores[0]=1&Valores[1]=2&Valores[2]=3'); | |
}); | |
test('Posso transformar um json que contenha propriedades do tipo array de objeto complexo em um form serializado', function () { | |
var model = { | |
Nome: "Alberto", | |
Idade: 21, | |
Valores: [{ Valor: 1 }, { Valor: 2}] | |
}; | |
equal(jsonToFormUrlencoded(model), 'Nome=Alberto&Idade=21&Valores[0].Valor=1&Valores[1].Valor=2'); | |
}); | |
test('Posso transformar um json em um form serializado', function () { | |
var model = { | |
Codigo: "1", | |
Nome: "Fortes Informatica", | |
Estabelecimentos: [{ Codigo: "1", Nome: "Matriz" }, { Codigo: "2", Nome: "Benfica"}] | |
}; | |
equal(jsonToFormUrlencoded(model), 'Codigo=1&Nome=Fortes+Informatica&Estabelecimentos[0].Codigo=1&Estabelecimentos[0].Nome=Matriz&Estabelecimentos[1].Codigo=2&Estabelecimentos[1].Nome=Benfica'); | |
}); | |
test('Posso transformar um json em um form serializado fodasticamente', function () { | |
var model = { | |
Codigo: "1", | |
Nome: "Fortes Informatica", | |
Estabelecimentos: [{ | |
Codigo: "1", | |
Nome: "Matriz", | |
V: [{ VV: 1 }] | |
}, { | |
Codigo: "2", | |
Nome: "Benfica", | |
V: [{ VV: 2 }] | |
}] | |
}; | |
equal(jsonToFormUrlencoded(model), | |
'Codigo=1&Nome=Fortes+Informatica&Estabelecimentos[0].Codigo=1&Estabelecimentos[0].Nome=Matriz&Estabelecimentos[0].V[0].VV=1&Estabelecimentos[1].Codigo=2&Estabelecimentos[1].Nome=Benfica&Estabelecimentos[1].V[0].VV=2'); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment