Zastanawiam się tylko nad „stringify” vs „serialize” . Dla mnie są to to samo (chociaż mogę się mylić), ale z mojego przeszłego doświadczenia (głównie z asp.net ) używam Serialize()
i nigdy nie używam Stringify()
.
Wiem, że mogę utworzyć prosty alias w JavaScript,
// either
JSON.serialize = function(input) {
return JSON.stringify(input);
};
// or
JSON.serialize = JSON.stringify;
ale zastanawiam się tylko nad różnicą między nimi i dlaczego wybrano strify.
dla celów porównania, oto jak serializować XML do łańcucha w 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
źródło
źródło
JSON.serialize = JSON.stringify
?ToString();
. Tam jest pocieranie.JSON.serialize(obj).toString();
lubjsonObject().toString();
... w ten sposób wyglądałaby podobnie do mojego C # ... ale teraz to komplikuję.Odpowiedzi:
Przyjrzyj się bliżej dwóm komentarzom, które postawiłeś na pytanie:
i
Teraz pamiętaj, że w JavaScript, obiekt jest skrótem (raczej, jeśli używasz Prototype lub innego frameworka, powinien zostać zakwalifikowany jako „specjalny rodzaj skrótu” - ale prosta forma działa w tym przykładzie):
Jedynym powodem, dla którego
serialize()
może być konieczne w Javascript, jest wycięcie funkcji, odniesień do innych obiektów itp.Wracając do przykładu w języku C # - właśnie przestaliśmy
.Serialize()
być niepotrzebni. Obiekt jest skrótem, jest już zserializowany, dalsza „serializacja” i tak musiałaby być wykonana ręcznie we własnym kodzie. Pozostaje ci tylko to.ToString()
.Czy
.stringify()
ma to teraz większy sens?źródło
.toString()
Wynika to z faktu, że notacja JSON została określona w 1999 r., A nie po 2002 r. ( Została
asp.net
wydana w tym roku). więc myślę, że nie wiedzieli oserialize
.Żarty na bok,
Słysząc to słowo
serialization
, pierwszą rzeczą, która przychodzi mi na myśl, jest konwersja danych na bajty, tutaj JSON.stringify ma doskonały sens, ponieważ przekształca obiekt w reprezentację łańcuchową, a nie bajtową.PS:
@Case Florell, nie można po prostu dodać
JSON.serialize
, ponieważ w trybie ścisłym ten kod może się nie powieść w niektórych przeglądarkach.jak
JSON
nie jest to twój przeciętny Obiekt.źródło
JSON
nie jest twoim przeciętnym przedmiotem”? Nie jestem ponury, po prostu niejasne, co masz na myśli.