Loading ...
Sorry, an error occurred while loading the content.

json2.js

Expand Messages
  • Douglas Crockford
    I have updated json2.js, adding features suggested by Mark Miller and Chris Zyp. JSON.parse can take a reviver function that is passed each key and value, with
    Message 1 of 15 , Mar 22, 2008
    • 0 Attachment
      I have updated json2.js, adding features suggested by Mark Miller and
      Chris Zyp.

      JSON.parse can take a reviver function that is passed each key and
      value, with this bound to the object containing the key.

      JSON.stringify can take a replacer function which similarly is passed
      each key and value, with this bound to the object containing the key.
      The replacer, like the toJSON method, gives more control over the
      serialization.

      http://www.JSON.org/json2.js
    • Douglas Crockford
      I have updated json2.js to include a prettyprinting option. If the third parameter is a string (such as t or ) or a number of spaces, then nested
      Message 2 of 15 , Mar 24, 2008
      • 0 Attachment
        I have updated json2.js to include a prettyprinting option. If the
        third parameter is a string (such as "\t" or " ") or a number of
        spaces, then nested structures will be broken into lines with indentation.

        See http://www.JSON.org/json2.js
      • Douglas Crockford
        The json2 methods take optional functions that can make transformations on the JSON structures. For example, suppose you want to represent dates as strings in
        Message 3 of 15 , Apr 27, 2008
        • 0 Attachment
          The json2 methods take optional functions that can make
          transformations on the JSON structures.

          For example, suppose you want to represent dates as strings in the form

          "Date(09/09/2001)"

          Pass a replacer function to the stringify method:

          text = JSON.stringify([new Date()], function (key, value) {
          return this[key] instanceof Date ?
          'Date(' + this[key] + ')' : value;
          });

          Pass a reviver function to the parse method:

          data = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
          var d;
          if (typeof value === 'string' &&
          value.slice(0, 5) === 'Date(' &&
          value.slice(-1) === ')') {
          d = new Date(value.slice(5, -1));
          if (d) {
          return d;
          }
          }
          return value;
          });
        • Douglas Crockford
          I have modified one of the regular expressions in the JSON.parse method to more reliably signal a syntax error in the case of a malformed uHHHH string. No
          Message 4 of 15 , May 25 4:54 PM
          • 0 Attachment
            I have modified one of the regular expressions in the JSON.parse
            method to more reliably signal a syntax error in the case of a
            malformed \uHHHH string. No security exploit existed or was repaired
            by this change.

            http://json.org/json2.js
          • Douglas Crockford
            I added toJSON methods to Boolean, Number, and String. This makes simple type wrappers work correctly, so JSON.stringify(new String( string )) produce
            Message 5 of 15 , Jul 9, 2008
            • 0 Attachment
              I added toJSON methods to Boolean, Number, and String. This makes
              simple type wrappers work correctly, so

              JSON.stringify(new String('string'))

              produce "string". If you don't use the type wrappers (and it is best
              that you don't) then you can delete those methods.
            • Douglas Crockford
              I modified json2.js slightly to coexist more easily with native JSON libraries. http://www.JSON.org/json2.js
              Message 6 of 15 , Sep 1, 2008
              • 0 Attachment
                I modified json2.js slightly to coexist more easily with native JSON
                libraries.

                http://www.JSON.org/json2.js
              • Lucas Smith
                Doug, Can you elaborate on the changes? Do you maintain the source in a VCS, or is it the responsibility of consumers to store copies locally to see diffs?
                Message 7 of 15 , Sep 1, 2008
                • 0 Attachment
                  Doug,

                  Can you elaborate on the changes? Do you maintain the source in a
                  VCS, or is it the responsibility of consumers to store copies locally
                  to see diffs?

                  Luke

                  On Sep 1, 2008, at 3:03 PM, Douglas Crockford wrote:

                  > I modified json2.js slightly to coexist more easily with native JSON
                  > libraries.
                  >
                  > http://www.JSON.org/json2.js
                  >
                  >
                  >



                  [Non-text portions of this message have been removed]
                • Douglas Crockford
                  ... A JSON object is created if one doesn t exist. If the object does not have a stringify method, one is added. If the object does not have a parse method,
                  Message 8 of 15 , Sep 2, 2008
                  • 0 Attachment
                    --- In json@yahoogroups.com, Lucas Smith <lsmith@...> wrote:
                    > Can you elaborate on the changes?

                    A JSON object is created if one doesn't exist.

                    If the object does not have a stringify method, one is added.

                    If the object does not have a parse method, one is added.
                  • Douglas Crockford
                    I changed the stringify method s array test from if (typeof value.length === number && !value.propertyIsEnumerable( length )) { to the more reliable Miller
                    Message 9 of 15 , Nov 19, 2008
                    • 0 Attachment
                      I changed the stringify method's array test from

                      if (typeof value.length === 'number' &&
                      !value.propertyIsEnumerable('length')) {

                      to the more reliable Miller device

                      if (Object.prototype.toString.apply(value) === '[object Array]') {

                      See http://blog.360.yahoo.com/douglascrockford?p=916
                    • Douglas Crockford
                      json2.js is now available on Github. https://github.com/douglascrockford/JSON-js
                      Message 10 of 15 , Nov 18, 2010
                      • 0 Attachment
                        json2.js is now available on Github.

                        https://github.com/douglascrockford/JSON-js
                      Your message has been successfully submitted and would be delivered to recipients shortly.