Eu só estou querendo saber sobre "stringify" vs "serializar" . Para mim, eles são a mesma coisa (embora eu possa estar errado), mas na minha experiência passada (principalmente com asp.net ) eu uso Serialize()
e nunca uso Stringify()
.
Eu sei que posso criar um alias simples em Javascript,
// either
JSON.serialize = function(input) {
return JSON.stringify(input);
};
// or
JSON.serialize = JSON.stringify;
mas estou me perguntando sobre a diferença entre os dois e por que o stringify foi escolhido.
para fins de comparação, veja como serializar XML para uma String em C #
public static string SerializeObject<T>(this T toSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
StringWriter textWriter = new StringWriter();
xmlSerializer.Serialize(textWriter, toSerialize);
return textWriter.ToString();
}
javascript
Chase Florell
fonte
fonte
JSON.serialize = JSON.stringify
?ToString();
. Lá inlies o atrito.JSON.serialize(obj).toString();
oujsonObject().toString();
... dessa forma, parecesse muito com o meu C # ... mas agora eu estou complicando demais.Respostas:
Dê uma olhada nos dois comentários que você colocou na pergunta:
e
Agora, lembre-se de que, em Javascript, um objeto é um hash (em vez disso, se estiver usando Prototype ou outra estrutura, ele deve ser qualificado como um "tipo especial de hash" - mas o formulário simples funciona neste exemplo):
O único motivo pelo qual um
serialize()
Javascript pode ser necessário é cortar as funções, referências a outros objetos etc.Então, voltando ao seu exemplo de C # - acabamos de
.Serialize()
considerar desnecessários. Um objeto é um hash, ele já está serializado, "serialização" adicional teria que ser feita manualmente em seu próprio código. Tudo o que você deixa é.ToString()
.Faz
.stringify()
mais sentido agora?fonte
.toString()
Isso ocorre porque a notação JSON foi especificada em 1999 e não após 2002 (
asp.net
é lançada naquele ano). então eu acho que eles não sabiam sobre oserialize
.Piadas a parte,
Ao ouvir a palavra
serialization
, a primeira coisa que me vem à mente é como converter os dados em bytes, aqui o JSON.stringify faz todo o sentido, pois converte o objeto em uma representação de cadeia e não em byte.PS:
@Chase Florell, você não pode simplesmente adicionar
JSON.serialize
, como no modo estrito, esse código pode realmente falhar em alguns navegadores.como
JSON
não é seu objeto comum.fonte
JSON
não é seu objeto comum"? Não estou sendo sarcástico, apenas não entendo o que você quer dizer.