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

json.js

Expand Messages
  • Douglas Crockford
    I revised json.js to clarify specification issues in the proposed ECMAScript 4th Edition standard. It now encodes dates as formal ISO strings. By adding a
    Message 1 of 13 , Oct 29, 2006
    • 0 Attachment
      I revised json.js to clarify specification issues in the proposed
      ECMAScript 4th Edition standard.

      It now encodes dates as formal ISO strings. By adding a custom
      toJSONString method to a date object, other representations can be
      obtained.

      Custom toJSONString methods can also be added to any object or array.

      http://www.json.org/json.js
    • Peter Michaux
      Hi Douglas, At first glance it looks like it was much easier to modify the old file so that it didn t affect any built in prototypes and brake for-in loops. Do
      Message 2 of 13 , Oct 29, 2006
      • 0 Attachment
        Hi Douglas,

        At first glance it looks like it was much easier to modify the old
        file so that it didn't affect any built in prototypes and brake for-in
        loops. Do you think that you would be able to make the old file still
        available also but with a comment about dates and modified so it
        doesn't change any prototypes? This way people like me can start using
        JSON in existing apps without braking their code. I am lucky I
        downloaded the old file before it disappeared!

        Peter



        On 10/29/06, Douglas Crockford <douglas@...> wrote:
        >
        > I revised json.js to clarify specification issues in the proposed
        > ECMAScript 4th Edition standard.
        >
        > It now encodes dates as formal ISO strings. By adding a custom
        > toJSONString method to a date object, other representations can be
        > obtained.
        >
        > Custom toJSONString methods can also be added to any object or array.
        >
        > http://www.json.org/json.js
      • Joshua Raphael Fuentes
        ... From: Douglas Crockford To: json@yahoogroups.com Sent: Monday, October 30, 2006 7:08:33 AM Subject: [json] json.js I revised
        Message 3 of 13 , Oct 29, 2006
        • 0 Attachment
          ----- Original Message ----
          From: Douglas Crockford <douglas@...>
          To: json@yahoogroups.com
          Sent: Monday, October 30, 2006 7:08:33 AM
          Subject: [json] json.js













          I revised json.js to clarify specification issues in the proposed

          ECMAScript 4th Edition standard.



          It now encodes dates as formal ISO strings. By adding a custom

          toJSONString method to a date object, other representations can be

          obtained.



          Custom toJSONString methods can also be added to any object or array.



          http://www.json org/json. js














          <!--

          #ygrp-mlmsg {font-size:13px;font-family:arial,helvetica,clean,sans-serif;}
          #ygrp-mlmsg table {font-size:inherit;font:100%;}
          #ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
          #ygrp-mlmsg pre, code {font:115% monospace;}
          #ygrp-mlmsg * {line-height:1.22em;}
          #ygrp-text{
          font-family:Georgia;
          }
          #ygrp-text p{
          margin:0 0 1em 0;
          }
          #ygrp-tpmsgs{
          font-family:Arial;
          clear:both;
          }
          #ygrp-vitnav{
          padding-top:10px;
          font-family:Verdana;
          font-size:77%;
          margin:0;
          }
          #ygrp-vitnav a{
          padding:0 1px;
          }
          #ygrp-actbar{
          clear:both;
          margin:25px 0;
          white-space:nowrap;
          color:#666;
          text-align:right;
          }
          #ygrp-actbar .left{
          float:left;
          white-space:nowrap;
          }
          .bld{font-weight:bold;}
          #ygrp-grft{
          font-family:Verdana;
          font-size:77%;
          padding:15px 0;
          }
          #ygrp-ft{
          font-family:verdana;
          font-size:77%;
          border-top:1px solid #666;
          padding:5px 0;
          }
          #ygrp-mlmsg #logo{
          padding-bottom:10px;
          }

          #ygrp-vital{
          background-color:#e0ecee;
          margin-bottom:20px;
          padding:2px 0 8px 8px;
          }
          #ygrp-vital #vithd{
          font-size:77%;
          font-family:Verdana;
          font-weight:bold;
          color:#333;
          text-transform:uppercase;
          }
          #ygrp-vital ul{
          padding:0;
          margin:2px 0;
          }
          #ygrp-vital ul li{
          list-style-type:none;
          clear:both;
          border:1px solid #e0ecee;
          }
          #ygrp-vital ul li .ct{
          font-weight:bold;
          color:#ff7900;
          float:right;
          width:2em;
          text-align:right;
          padding-right:.5em;
          }
          #ygrp-vital ul li .cat{
          font-weight:bold;
          }
          #ygrp-vital a {
          text-decoration:none;
          }

          #ygrp-vital a:hover{
          text-decoration:underline;
          }

          #ygrp-sponsor #hd{
          color:#999;
          font-size:77%;
          }
          #ygrp-sponsor #ov{
          padding:6px 13px;
          background-color:#e0ecee;
          margin-bottom:20px;
          }
          #ygrp-sponsor #ov ul{
          padding:0 0 0 8px;
          margin:0;
          }
          #ygrp-sponsor #ov li{
          list-style-type:square;
          padding:6px 0;
          font-size:77%;
          }
          #ygrp-sponsor #ov li a{
          text-decoration:none;
          font-size:130%;
          }
          #ygrp-sponsor #nc {
          background-color:#eee;
          margin-bottom:20px;
          padding:0 8px;
          }
          #ygrp-sponsor .ad{
          padding:8px 0;
          }
          #ygrp-sponsor .ad #hd1{
          font-family:Arial;
          font-weight:bold;
          color:#628c2a;
          font-size:100%;
          line-height:122%;
          }
          #ygrp-sponsor .ad a{
          text-decoration:none;
          }
          #ygrp-sponsor .ad a:hover{
          text-decoration:underline;
          }
          #ygrp-sponsor .ad p{
          margin:0;
          }
          o {font-size:0;}
          .MsoNormal {
          margin:0 0 0 0;
          }
          #ygrp-text tt{
          font-size:120%;
          }
          blockquote{margin:0 0 0 4px;}
          .replbq {margin:4;}
          -->






          cool...now JSON is getting bigger and better. I use json, and have great faith in it.. it's nice that can now consider date data types





          [Non-text portions of this message have been removed]
        • Martin Cooper
          ... I agree with Peter. Sure, these methods might become part of the language next year, but there should be a way for people to use the code today without
          Message 4 of 13 , Oct 30, 2006
          • 0 Attachment
            On 10/29/06, Peter Michaux <petermichaux@...> wrote:
            >
            > Hi Douglas,
            >
            > At first glance it looks like it was much easier to modify the old
            > file so that it didn't affect any built in prototypes and brake for-in
            > loops. Do you think that you would be able to make the old file still
            > available also but with a comment about dates and modified so it
            > doesn't change any prototypes? This way people like me can start using
            > JSON in existing apps without braking their code. I am lucky I
            > downloaded the old file before it disappeared!


            I agree with Peter. Sure, these methods might become part of the language
            next year, but there should be a way for people to use the code today
            without breaking other existing code.

            It would be very straightforward to define the functions in a namespace of
            their own (e.g. json), and then have a conditional block that also makes
            them available according to the standard, for people who want that.

            For example, something like:

            var json = {};
            json.arrayToJSONString = function() { ... }
            json.booleanToJSONString = function() { ... }
            ...
            if (typeof jsonExcludeStandard != "undefined") {
            Array.prototype.toJSONString = json.arrayToJSONString;
            Boolean.prototype.toJSONString = json.booleanToJSONString;
            ...
            }

            This will preserve the existing functionality by default. However, if I want
            to exclude the functions that modify standard prototypes, all I need to do
            is define jsonExcludeStandard before pulling in json.js.

            How about it?

            --
            Martin Cooper



            Peter
            >
            >
            >
            > On 10/29/06, Douglas Crockford <douglas@...> wrote:
            > >
            > > I revised json.js to clarify specification issues in the proposed
            > > ECMAScript 4th Edition standard.
            > >
            > > It now encodes dates as formal ISO strings. By adding a custom
            > > toJSONString method to a date object, other representations can be
            > > obtained.
            > >
            > > Custom toJSONString methods can also be added to any object or array.
            > >
            > > http://www.json.org/json.js
            >
            >
            >
            > Yahoo! Groups Links
            >
            >
            >
            >
            >


            [Non-text portions of this message have been removed]
          • Douglas Crockford
            Alistair Braidwood suggested a way to make toJSONString 25% faster by improving the way it handles commas. http://www.JSON.org/json.js
            Message 5 of 13 , Jun 11, 2007
            • 0 Attachment
              Alistair Braidwood suggested a way to make toJSONString 25% faster by
              improving the way it handles commas.

              http://www.JSON.org/json.js
            • Douglas Crockford
              The json.js reference implementation now produces date strings in the ISO Z format, in anticipation of the addition of Date.prototype.toISOString to
              Message 6 of 13 , Jul 20 8:46 AM
              • 0 Attachment
                The json.js reference implementation now produces date strings in the
                ISO Z format, in anticipation of the addition of
                Date.prototype.toISOString to ECMAScript.

                http://www.JSON.org/json.js
              • Douglas Crockford
                I changed the way that json.js calls the hasOwnProperty method. A design flaw in JavaScript causes hasOwnProperty to fail when an object contains a property
                Message 7 of 13 , Aug 5, 2007
                • 0 Attachment
                  I changed the way that json.js calls the hasOwnProperty method. A
                  design flaw in JavaScript causes hasOwnProperty to fail when an object
                  contains a property called "hasOwnProperty".

                  http://json.org/json.js
                • Douglas Crockford
                  The toJSONString methods can now take an optional whitelist parameter, an array of strings. It is used to select the properties that will be included in the
                  Message 8 of 13 , Aug 19, 2007
                  • 0 Attachment
                    The toJSONString methods can now take an optional whitelist parameter,
                    an array of strings. It is used to select the properties that will be
                    included in the JSON text.

                    http://www.json.org/json.js
                  • Julian Tonti-Filippini
                    I wanted to modify json.js to add RegExp support so I added the following: RegExp.prototype.toJSONString = function () { return this.toString().toJSONString();
                    Message 9 of 13 , Oct 3, 2007
                    • 0 Attachment
                      I wanted to modify json.js to add RegExp support so I added the following:

                      RegExp.prototype.toJSONString = function () {
                      return this.toString().toJSONString();
                      };

                      ...and found that it didn't work under Firefox because the typeof
                      RegExp is 'function' rather than 'object'. This required modification
                      of the switch in Object.prototype.toJSONString to add a fall-through
                      case for 'function'.

                      My gut tells me that there's something criminally wrong about does
                      this. Can someone tell me why?

                      - Julian
                    • Douglas Crockford
                      A new version of json.js is available. It corrects a problem in parseJSON where it was possible to have the contents of one of the caller s variables included
                      Message 10 of 13 , Oct 5, 2007
                      • 0 Attachment
                        A new version of json.js is available. It corrects a problem in
                        parseJSON where it was possible to have the contents of one of the
                        caller's variables included in the decoded value.

                        http://www.JSON.org/json.js
                      • Douglas Crockford
                        A design error in Firefox could allow parseJSON to include an eval function object in the resulting JSON object. This situation will now raise an exception.
                        Message 11 of 13 , Oct 10, 2007
                        • 0 Attachment
                          A design error in Firefox could allow parseJSON to include an eval
                          function object in the resulting JSON object. This situation will now
                          raise an exception.

                          http://www.JSON.org/json.js
                        Your message has been successfully submitted and would be delivered to recipients shortly.