Мне просто интересно о "stringify" против "serialize" . Для меня это одно и то же (хотя я могу ошибаться), но в моем прошлом опыте (в основном с asp.net ) я использую Serialize()
и никогда не использую Stringify()
.
Я знаю, что могу создать простой псевдоним в Javascript,
// either
JSON.serialize = function(input) {
return JSON.stringify(input);
};
// or
JSON.serialize = JSON.stringify;
но мне просто интересно, какая разница между ними и почему был выбран stringify.
для сравнения вот как вы сериализуете XML в строку в 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
Чейз Флорелл
источник
источник
JSON.serialize = JSON.stringify
?ToString();
. Там внутри руб.JSON.serialize(obj).toString();
илиjsonObject().toString();
... таким образом, он будет выглядеть так же, как мой C # ... но теперь я слишком усложняю его.Ответы:
Внимательно посмотрите на два комментария, которые вы поставили на вопрос:
и
Теперь запомните, что в Javascript объект является хешем (скорее, если используется Prototype или другой фреймворк, его следует квалифицировать как «особый вид хеша» - но простая форма работает для этого примера):
Единственная причина, по
serialize()
которой в Javascript может возникнуть необходимость, - это отключение функций, ссылок на другие объекты и т. Д.Итак, вернемся к вашему примеру с C # - мы просто вырезали его за
.Serialize()
ненадобностью. Объект - это хеш, он уже сериализован, в любом случае дальнейшую «сериализацию» придется выполнять вручную в вашем собственном коде. Все, что оставляет тебя, это.ToString()
.Есть ли
.stringify()
смысл сейчас?источник
.toString()
Это связано с тем, что нотация JSON была указана в 1999 году, а не после 2002 года (
asp.net
выпущена в этом году). так что я думаю, они не знали оserialize
.Без шуток,
Услышав слово
serialization
, первое, что приходит мне в голову, это как преобразовать данные в байты, здесь JSON.stringify имеет смысл, поскольку он преобразует объект в строковое представление, а не в байтовое представление.PS:
@ Чейз, Флорелл, вы не можете просто добавить
JSON.serialize
, так как в строгом режиме этот код может фактически не работать в некоторых браузерах.как
JSON
не ваш средний объект.источник
JSON
не ваш средний объект"? Я не извращенец, просто неясно, что ты имеешь в виду.