Como você serializar objetos JavaScript com métodos usando JSON?
Pergunta
Eu estou procurando um acessório para JSON que também irá seriar métodos. Eu tenho um objeto que age como uma coleção de objetos, e gostaria de serializar os métodos do objeto coleção também. Até agora eu localizado ClassyJSON . Quaisquer pensamentos?
Solução
Eu não acho que a serialização métodos é sempre uma boa idéia. Se você pretende executar o serverside código, você se abre para ataques. Se você deseja executá-lo do lado do cliente, você é melhor fora apenas os métodos locais, possivelmente fazendo referência ao nome do método que você está indo para uso nos objetos serializados.
Eu acredito que embora "f = "+function() {}
vai render-lhe uma para a versão de cadeia que você pode eval:
var test = "f = " + function() { alert("Hello"); };
eval(test)
E para manipulação boa json, eu recomendaria protótipo, que tem grandes métodos para serialização de objetos para JSON.
Outras dicas
Tente fugir sem serialização de código javascript. Dessa forma, encontra-se um mundo de dor. Depuração será muito mais fácil se o código só pode vir de arquivos estáticos, não a partir de um banco de dados. Em vez disso, anda suas respostas JSON depois de recebê-los e passar os dados apropriados para os construtores de objetos apropriados.
Se você absolutamente deve serializar-los, chamando toString () em uma função irá retornar a sua fonte.
Se você usar o quadro WCF para desenvolver serviços web RESTful, que é muito fácil de alcançar. Basta criar suas classes estrutura de dados com sua coleção desejado com DataContract, atributos 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;}
}