UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

92 lines (83 loc) 3.24 kB
define(["./kernel", "../json"], function(dojo, json){ // module: // dojo/_base/json /*===== return { // summary: // This module defines the dojo JSON API. }; =====*/ dojo.fromJson = function(/*String*/ js){ // summary: // Parses a JavaScript expression and returns a JavaScript value. // description: // Throws for invalid JavaScript expressions. It does not use a strict JSON parser. It // always delegates to eval(). The content passed to this method must therefore come // from a trusted source. // It is recommend that you use dojo/json's parse function for an // implementation uses the (faster) native JSON parse when available. // js: // a string literal of a JavaScript expression, for instance: // `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'` return eval("(" + js + ")"); // Object }; /*===== dojo._escapeString = function(){ // summary: // Adds escape sequences for non-visual characters, double quote and // backslash and surrounds with double quotes to form a valid string // literal. }; =====*/ dojo._escapeString = json.stringify; // just delegate to json.stringify dojo.toJsonIndentStr = "\t"; dojo.toJson = function(/*Object*/ it, /*Boolean?*/ prettyPrint){ // summary: // Returns a [JSON](http://json.org) serialization of an object. // description: // Returns a [JSON](http://json.org) serialization of an object. // Note that this doesn't check for infinite recursion, so don't do that! // It is recommend that you use dojo/json's stringify function for an lighter // and faster implementation that matches the native JSON API and uses the // native JSON serializer when available. // it: // an object to be serialized. Objects may define their own // serialization via a special "__json__" or "json" function // property. If a specialized serializer has been defined, it will // be used as a fallback. // Note that in 1.6, toJson would serialize undefined, but this no longer supported // since it is not supported by native JSON serializer. // prettyPrint: // if true, we indent objects and arrays to make the output prettier. // The variable `dojo.toJsonIndentStr` is used as the indent string -- // to use something other than the default (tab), change that variable // before calling dojo.toJson(). // Note that if native JSON support is available, it will be used for serialization, // and native implementations vary on the exact spacing used in pretty printing. // returns: // A JSON string serialization of the passed-in object. // example: // simple serialization of a trivial object // | var jsonStr = dojo.toJson({ howdy: "stranger!", isStrange: true }); // | doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr); // example: // a custom serializer for an objects of a particular class: // | dojo.declare("Furby", null, { // | furbies: "are strange", // | furbyCount: 10, // | __json__: function(){ // | }, // | }); // use dojo/json return json.stringify(it, function(key, value){ if(value){ var tf = value.__json__||value.json; if(typeof tf == "function"){ return tf.call(value); } } return value; }, prettyPrint && dojo.toJsonIndentStr); // String }; return dojo; });