1 var JSON_CLASS_KEY = '__c';
2 var JSON_DATA_KEY = '__p';
6 function JSON_version() { return 'wrapper'; }
8 function JSON2js(text) {
9 return decodeJS(JSON.parse(text));
12 JSON2js.fallbackObjectifier = null;
14 /* iterates over object, arrays, or fieldmapper objects */
15 function jsIterate( arg, callback ) {
16 if( arg && typeof arg == 'object' ) {
17 if( arg.constructor == Array ) {
18 for( var i = 0; i < arg.length; i++ )
21 } else if( arg.constructor == Object ) {
25 } else if( arg._isfieldmapper && arg.a ) {
26 for( var i = 0; i < arg.a.length; i++ )
33 /* removes the class/paylod wrapper objects */
34 function decodeJS(arg) {
36 if(arg == null) return null;
38 if( arg && typeof arg == 'object' &&
39 arg.constructor == Object &&
40 arg[JSON_CLASS_KEY] ) {
43 arg = eval('new ' + arg[JSON_CLASS_KEY] + '(arg[JSON_DATA_KEY])');
45 if (JSON2js.fallbackObjectifier)
46 arg = JSON2js.fallbackObjectifier(arg, JSON_CLASS_KEY, JSON_DATA_KEY );
54 o[i] = decodeJS(o[i]);
60 o[i] = decodeJS(o[i]);
69 function jsClone(obj) {
70 if( obj == null ) return null;
71 if( typeof obj != 'object' ) return obj;
74 if (obj.constructor == Array) {
76 for( var i = 0; i < obj.length; i++ )
77 newobj[i] = jsClone(obj[i]);
79 } else if( obj.constructor == Object ) {
82 newobj[i] = jsClone(obj[i]);
84 } else if( obj._isfieldmapper && obj.a ) {
85 eval('newobj = new '+obj.classname + '();');
86 for( var i = 0; i < obj.a.length; i++ )
87 newobj.a[i] = jsClone(obj.a[i]);
94 /* adds the class/payload wrapper objects */
95 function encodeJS(arg) {
96 if( arg == null ) return null;
97 if( typeof arg != 'object' ) return arg;
99 if( arg._isfieldmapper ) {
101 if(!arg.a) arg.a = [];
102 for( var i = 0; i < arg.a.length; i++ )
103 newarr[i] = encodeJS(arg.a[i]);
106 a[JSON_CLASS_KEY] = arg.classname;
107 a[JSON_DATA_KEY] = newarr;
113 if(arg.length != undefined) {
115 for( var i = 0; i < arg.length; i++ )
116 newobj.push(encodeJS(arg[i]));
122 newobj[i] = encodeJS(arg[i]);
126 /* turns a javascript object into a JSON string */
127 function js2JSON(arg) {
128 return JSON.stringify(encodeJS(arg));