Как вы сериализуете объекты JavaScript с помощью методов JSON? - PullRequest
2 голосов
/ 21 сентября 2008

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

Ответы [ 3 ]

4 голосов
/ 21 сентября 2008

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

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

1 голос
/ 21 сентября 2008

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

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

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

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

1 голос
/ 21 сентября 2008

Если вы используете 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;}
}
...