I read the post from Scott Hanselman today comparing the internal use of JSON de-/serializer from the Atlas framework and Ajax.NET Professional.
If you have a look at the DateTime example, if you get the JSON representation of this object you will get something like this:
As you can see the JSON representation is very different, and with Atlas nothing is working more or better. If you have a deep look in Ajax.NET Professional you can see that currently a lot of data types are supported with special JSON representation to save nearly 50% traffic.
Conclusion is: never compare different things that are not comparable. Ajax.NET Professional allows you to create a Person object on the client-side code with the correct type on the server-side, this is not working in all AJAX frameworks I currently know.
The __type property is used to allow to use the object in ArrayLists or any other object list. The next thing is that if you are using different types that are inherited from a common interface you'd like to get the correct type instead of only getting the properties defined in the common abstract class. This is not working with Atlas...!! See an great example for the Person class at my example page where I will use result.save() to save the returned Person class instance.
At my last talk about Ajax.NET Professional the first speaker (Oliver Scheer, Microsoft) talked about Atlas. In the discussion after his talk there where a couple of developers that had exactly this problem with Atlas. With Ajax.NET Professional it is more working than using .NET on the client-side.
Updated: see my part 2 of this article here.