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

Re: [json] json.js

Expand Messages
  • 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 1 of 13 , Oct 29, 2006
      ----- 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 2 of 13 , Oct 30, 2006
        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 3 of 13 , Jun 11, 2007
          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 4 of 13 , Jul 20, 2007
            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 5 of 13 , Aug 5, 2007
              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 6 of 13 , Aug 19, 2007
                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 7 of 13 , Oct 3, 2007
                  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 8 of 13 , Oct 5, 2007
                    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 9 of 13 , Oct 10, 2007
                      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.