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

json.js

Expand Messages
  • Douglas Crockford
    I updated the parseJSON method. I removed the string deletion phase which was a added as a workarond for IE s exponential regexp performance. We found that IE
    Message 1 of 13 , Oct 5, 2006
    • 0 Attachment
      I updated the parseJSON method. I removed the string deletion phase
      which was a added as a workarond for IE's exponential regexp
      performance. We found that IE is happier doing lazy matching. The new
      version is simpler and faster.
    • 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 2 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 3 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 4 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 5 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 6 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 7 of 13 , Jul 20, 2007
                • 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 8 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 9 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 10 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 11 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 12 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.