zoukankan      html  css  js  c++  java
  • JSON parse在各浏览器的兼容性列表

    外国某JS高手Asen Bozhilov 做的统计表,趁没被墙前立即抱回来!

    var JSONTest = (function (global) {
        var JSON = global.JSON,
            NATIVE_JSON_PARSE_SUPPORTED = JSON != null && typeof JSON.parse == 'function',
            ASSERT_ERROR, parse;
        
        ASSERT_ERROR = [
            /**
             * Empty string is not a valid JSONValue 
             */
            "",
            
            /**
             * Evaluating ECMAScript expression is not allowed in JSONText
             */
             "eval('6 * 6') == 36",
             
            /**
             * ECMAScript list is not allowed as JSONValue
             */ 
             '"str", "str"',         
                    
            /**
             * ECMA-262-5
             * JSONString :
             * JSONStringCharacter :: See 15.12.1.1
             * JSONSourceCharacter but not double-quote " or backslash \ or U+0000 thru U+001F
             */
            '"""', '"\\"',
            '"\x00"', '"\x01"', '"\x02"', '"\x03"', '"\x04"', '"\x05"', '"\x06"', '"\x07"',
            '"\x08"', '"\x09"', '"\x0a"', '"\x0b"', '"\x0c"', '"\x0d"', '"\x0e"', '"\x0f"',
            '"\x10"', '"\x11"', '"\x12"', '"\x13"', '"\x14"', '"\x15"', '"\x16"', '"\x17"',
            '"\x18"', '"\x19"', '"\x1a"', '"\x1b"', '"\x1c"', '"\x1d"', '"\x1e"', '"\x1f"',
            
            /**
             * ECMA-262-5
             * JSONEscapeSequence :: See 15.12.1.1
             * Cannot contain HexEscapeSequence 
             */
             '"\\xF1"',
             
            /**
             * ECMA-262-5
             * JSONEscapeSequence :: See 15.12.1.1
             * Cannot contain OctalEscapeSequence
             */
             '"\\101"',             
                        
            /**
             * ECMA-262-5
             * JSONNumber :: See 15.12.1.1
             * - opt DecimalIntegerLiteral JSONFraction opt ExponentPart opt
             */
            '+2', '2.', '.2',
            
            /**
             * ECMA-262-5
             * JSONNumber :: See 15.12.1.1  
             * Cannot contain OctalIntegerLiteral 
             */ 
             '00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
             
            /**
             * ECMA-262-5
             * JSONNumber :: See 15.12.1.1  
             * Cannot contain HexIntegerLiteral 
             */  
             '0xFF',        
        
            /**
             * ECMA-262-5
             * JSONMember : See 15.12.1.2
             * JSONString : JSONValue
             */
            '{property : false}',
            "{'property' : false}",
            
            /**
             * JSONNumber is not allowed as property name
             */
             '{2 : false}',
             
            /**
             * true, false and null are not allowed as property name 
             */
             '{true : false}',
             '{false : false}',
             '{null  : false}', 
            
            /**
             * ECMA-262-5
             * JSONMemberList : See 15.12.1.2
             * Trailing coma is not allowed in JSONMemberList:
             */
             '{"property": "value",}',
             
            /**
             * ECMA-262-5
             * JSONElementList : See 15.12.1.2
             * Trailing coma is not allowed in JSONElementList :
             */  
             '["value", "value",]',
             
             /**
              * ECMA-262-5
              * JSONWhiteSpace :: See 15.12.1.1
              *   <TAB> 
              *   <CR> 
              *   <LF> 
              *   <SP> 
              */
              
              /**
               * Vertical Tab <VT> is not allowed in JSONWhiteSpace
               */
               '[\u000B]',
               
              /**
               * Form Feed <FF> is not allowed in JSONWhiteSpace
               */
               '[\u000C]',
                
              /**
               * No-break space <NBSP> is not allowed in JSONWhiteSpace
               */
               '[\u00A0]',
                 
              /**
               * Byte Order Mark <BOM> is not allowed in JSONWhiteSpace
               */  
               '[\uFEFF]',
               
              /**
               * Other category 鈥淶s鈥�
               * Any other Unicode 鈥渟pace separator鈥� <USP> are not allowed in JSONWhiteSpace
               */
               '[\u1680]', '[\u180E]', '[\u2000]', '[\u2001]', '[\u2002]', '[\u2003]', '[\u2004]', '[\u2005]', '[\u2006]', '[\u2007]', '[\u2008]', '[\u2009]', '[\u200A]', '[\u202F]', '[\u205F]', '[\u3000]'
        ];
        
        return {
           parse : function () {
                for (var i = 0, j = 2, len = ASSERT_ERROR.length; i < len; i++, j++) {
                    try {
                        JSON.parse(ASSERT_ERROR[i]);
                        this.print(j, false, "Allowed syntax");
                    }catch (e) {
                        if (e instanceof SyntaxError) {
                            this.print(j, true, "SyntaxError");
                        }
                        else {
                            this.print(j, false, "Undefined behavior");
                        }
                    }
                }
            },
            
            print : function (idx, pass, msg) {
                var row = this.table.rows[idx],
                    cell = row.cells[1];
                    
                cell.className = pass ? 'yes' : 'no';
                cell.innerHTML = msg;
            },
            
            run : function () {
                this.table = document.getElementById('json-table');
                this.print(1, NATIVE_JSON_PARSE_SUPPORTED, 'Yes');
                if (NATIVE_JSON_PARSE_SUPPORTED) {
                    this.parse();
                }    
            }
        };
    })(this);
    
    JSON text This implementation   FF 3.6.6 FF 4.0 beta IE8 IE9 Beta Opera 11 (build 1055) Chrome 6.0.472 Safari 5 (6533.16) json2 in FF 3.6.6
    JSON.parse -   Yes Yes Yes Yes Yes Yes Yes Yes
    JSON.parse(''); -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    eval('6 * 6') == 36; -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    "str", "str" -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    """ -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    "\" -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    "\u0000" -   Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0001" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0002" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0003" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0004" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0005" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0006" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0007" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0008" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0009" -   Allowed syntax SyntaxError Allowed syntax SyntaxError Allowed syntax SyntaxError Allowed syntax Allowed syntax
    "\u000a" -   Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    "\u000b" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u000c" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u000d" -   Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    "\u000e" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u000f" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0010" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0011" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0012" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0013" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0014" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0015" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0016" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0017" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0018" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u0019" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u001a" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u001b" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u001c" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u001d" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u001e" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\u001f" -   Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    "\xF1" -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    "\101" -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    +2 -   Allowed syntax Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    2. -   Allowed syntax Allowed syntax Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    .2 -   Allowed syntax Allowed syntax Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    00 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    01 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    02 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    03 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    04 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    05 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    06 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    07 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    08 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    09 -   Allowed syntax Allowed syntax SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax
    0xFF -   SyntaxError - SyntaxError SyntaxError - SyntaxError - SyntaxError
    {property : false} -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    {'property' : false} -   SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    {2 : false} -   SyntaxError - - - - SyntaxError - Allowed syntax
    {true : false} -   SyntaxError - - - - SyntaxError - Allowed syntax
    {false : false} -   SyntaxError - - - - SyntaxError - Allowed syntax
    {null : false} -   SyntaxError - - - - SyntaxError - Allowed syntax
    {"property" : "value",} -   Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    ["value", "value",] -   Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u000B] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax Allowed syntax
    [\u000C] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError Allowed syntax Allowed syntax
    [\u00A0] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\uFEFF] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    [\u1680] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    [\u180E] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    [\u2000] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2001] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2002] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2003] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2004] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2005] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2006] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2007] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2008] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u2009] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u200A] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
    [\u202F] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    [\u205F] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError SyntaxError
    [\u3000] -   SyntaxError SyntaxError Allowed syntax SyntaxError SyntaxError SyntaxError SyntaxError Allowed syntax
  • 相关阅读:
    怎样使用两行代码实现博客园打赏功能
    使用vue开发微信公众号下SPA站点的填坑之旅
    贝叶斯公式与最大后验估计(MAP)
    多元高斯分布(The Multivariate normal distribution)
    Jacobian矩阵、Hessian矩阵和Newton's method
    导数、方向导数与梯度
    解决只有单引号的Json格式转换成bean问题
    浅析Java中的final关键字
    观察者模式/ java实现附代码 /
    Java内存区域与内存溢出异常
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1951760.html
Copyright © 2011-2022 走看看