How do you serialize javascript objects with methods using JSON?

I am looking for an enhancement to JSON that will also serialize methods. I have an object that acts as a collection of objects, and would like to serialize the methods of the collection object as well. So far I’ve located ClassyJSON. Any thoughts?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Try to get away without serializing javascript code. That way lies a world of pain. Debugging will be much easier if code can only come from static files, not from a database. Instead, walk your JSON responses after you receive them and pass the appropriate data to the appropriate object constructors.

If you absolutely must serialize them, calling toString() on a function will return its source.

Method 2

I don’t think serializing methods is ever a good idea. If you intend to run the code serverside, you open yourself to attacks. If you want to run it client side, you are better off just the local methods, possibly referencing the name of the method you are going to use in the serialized objects.

I do believe though that "f = "+function() {} will yield you a to string version that you can eval:

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

And for good json handling, I would recommend prototype, which has great methods for serializing objects to json.

Method 3

If you use WCF framework to develop RESTful web service, that is very easy to achieve.
Simply create your data structure classes with your desired collection with DataContract, DataMember attributes.

[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;}
}


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x