Me pregunto sobre "stringify" vs "serialize" . Para mí son lo mismo (aunque podría estar equivocado), pero en mi experiencia pasada (principalmente con asp.net ) uso Serialize()
y nunca uso Stringify()
.
Sé que puedo crear un alias simple en Javascript,
// either
JSON.serialize = function(input) {
return JSON.stringify(input);
};
// or
JSON.serialize = JSON.stringify;
pero me pregunto sobre la diferencia entre los dos y por qué se eligió stringify.
para fines de comparación, así es como serializa XML a una cadena en 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
fuente
fuente
JSON.serialize = JSON.stringify
?ToString();
. Ahí está el roce.JSON.serialize(obj).toString();
ojsonObject().toString();
... de esta manera se parecería mucho a mi C # ... pero ahora lo estoy complicando.Respuestas:
Eche un vistazo más de cerca a los dos comentarios que ha puesto sobre la pregunta:
y
Ahora recuerde que en Javascript, un objeto es un hash (más bien, si usa Prototype u otro marco, debe calificarse como un "tipo especial de hash", pero la forma simple funciona para este ejemplo):
La única razón por la que
serialize()
puede ser necesario en Javascript es para cortar las funciones, referencias a otros objetos, etc.Entonces, para volver a su ejemplo de C #, acabamos de eliminarlo
.Serialize()
como innecesario. Un objeto es un hash, ya está serializado, de todos modos la "serialización" adicional debería realizarse manualmente en su propio código. Todo lo que te deja es.ToString()
.¿Tiene
.stringify()
más sentido ahora?fuente
.toString()
Esto se debe a que la notación JSON se especificó en 1999, no después de 2002 (
asp.net
se lanzó en ese año). así que supongo que no sabían sobre elserialize
.Bromas aparte,
Al escuchar la palabra
serialization
, lo primero que me viene a la mente es como convertir los datos a bytes, aquí JSON.stringify tiene mucho sentido ya que convierte el objeto en una representación de cadena, no en una representación de bytes.PD:
@Chase Florell, no puede simplemente agregar
JSON.serialize
, ya que en modo estricto, este código puede fallar en algunos navegadores.como
JSON
no es tu objeto promedio.fuente
JSON
no es tu Objeto promedio"? No estoy siendo sarcástico, solo no estoy claro a qué te refieres.