- if ( data != null ) {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- rnum.test( data ) ? parseFloat( data ) :
- data;
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ } else {
+ data = undefined;