Как сериализовать объекты JavaScript с помощью методов, использующих JSON?

StackOverflow https://stackoverflow.com/questions/109769

  •  02-07-2019
  •  | 
  •  

Вопрос

Я ищу улучшение JSON, которое также будет сериализовать методы.У меня есть объект, который действует как коллекция объектов, и я также хотел бы сериализовать методы объекта коллекции.На данный момент я нашел КлассныйJSON.Есть предположения?

Это было полезно?

Решение

Я не думаю, что сериализация методов — хорошая идея.Если вы собираетесь запустить код на стороне сервера, вы подвергаете себя атакам.Если вы хотите запустить его на стороне клиента, лучше использовать только локальные методы, возможно, ссылаясь на имя метода, который вы собираетесь использовать в сериализованных объектах.

хотя я верю в это "f = "+function() {} даст вам строковую версию, которую вы можете оценить:

var test = "f = " + function() { alert("Hello"); };
eval(test)

А для хорошей обработки json я бы порекомендовал прототип, в котором есть отличные методы сериализации объектов в json.

Другие советы

Попытайтесь обойтись без сериализации кода JavaScript.На этом пути лежит мир боли.Отладка будет намного проще, если код будет поступать только из статических файлов, а не из базы данных.Вместо этого обрабатывайте ответы JSON после их получения и передайте соответствующие данные соответствующим конструкторам объектов.

Если вам абсолютно необходимо их сериализовать, вызов toString() для функции вернет ее источник.

Если вы используете платформу WCF для разработки веб-сервиса RESTful, этого очень легко достичь.Просто создайте классы структуры данных с желаемой коллекцией с атрибутами DataContract и DataMember.

[DataContract]
public class Foo
{
    [DataMember]
     public string FooName {get;set;}
    [DataMember]
     public FooItem[] FooItems {get;set;}
}


[DataContract]
public class FooItem
{
    [DataMember]
    public string Name {get;set;}
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top