亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

與JSON相關(guān)的一些函數(shù)

2024-09-05 00:23:39
字體:
供稿:網(wǎng)友

JSON作為一種輕量的數(shù)據(jù)傳輸格式,越來越受到人們的青睞。下面是我仿照Prototype的一些實(shí)現(xiàn)。

JSONFilter:/^///*-secure-([/s/S]*)/*///s*$/, 

unfilterJSON:function(json,filter) { 

    return json.replace((filter || dom.JSONFilter), function(a,b){ 

        return b || ""

    }); 

},

JSONFilter完全抄自Prototype,因?yàn)楹笈_(tái)基本上只會(huì)傳輸兩種格式的東西給我們——文本(xmlhttp.responseText)與XML(xmlhttp.responseXML)。如果要json,我們可以eval一下,或者使用現(xiàn)代瀏覽器提供的JSON.parse方法。但問題就出在eval中,很容易出現(xiàn)XSS攻擊。如果文本是注釋就可以避免這問題,在Prototype中還檢察一下請(qǐng)求的來源。對(duì)于自家的網(wǎng)站的請(qǐng)求,我們完全可以在請(qǐng)求前處理一下,讓它變成如下格式:

var text = '/*-secure-/n{"name": "Violet", "occupation": "character", "age": 25}/n*/'

 dom.unfilterJSON(text) 

// -> '{"name": "Violet", "occupation": "character", "age": 25}'

到時(shí)我們用unfilterJSON函數(shù)提取合法的字段來eval就沒問題了。

第二個(gè)函數(shù),判斷字符串是否符合JSON的格式。JSON是有固定的格式,要求鍵必須被雙引號(hào)括起來。下面的函數(shù)提取自json2:

isJSONText:function(json){// 

    return /^[/],:{}/s]*$/.test(json.replace(///(?:["////bfnrt]|u[0-9a-fA-F]{4})/g, "@") 

        .replace(/"[^"///n/r]*"|true|false|null|-?/d+(?:/./d*)?(?:[eE][+/-]?/d+)?/g, "]") 

        .replace(/(?:^|:|,)(?:/s*/[)+/g, "")); 

},

第三個(gè)函數(shù),將符合JSON的格式的文本變成JSON對(duì)象。第二參數(shù)用于指明此文本是否安全(如,是否同源請(qǐng)求)。如果能用原生對(duì)象的parse方法就用原生的,否則動(dòng)態(tài)解析它。之所以不用eval,是因?yàn)閑cma那幫人頭腦發(fā)熱,想禁掉它。

        evalJSON: function( json ,sanitize) {   

            if ( !is(json,"String") || !json ) 

                return null; 

            json = dom.unfilterJSON(json); 

                        if ( !sanitize || dom.isJSONText(json) ) { 

                return window.JSON && window.JSON.parse ? 

                window.JSON.parse( json ) : (new Function("return " + json))(); 

            } else { 

                throw  "Invalid JSON: " + json; 

            } 

        } 

//http://www.21kaiyun.com

var data =dom.evalJSON( '{ "name": "Violet", "occupation": "character" }'); 

data.name; 

//-> "Violet"

第四函數(shù),將JSON對(duì)象變成文本。

// http://www.49028c.com

//   var a = [1,2,3,4,{aa:8}]; puts(dom.toJSON(a)) 

toJSON:function(obj){ 

    if (window.JSON && window.JSON.stringify) { 

        return JSON.stringify(obj) 

    } 

    if (typeof window.uneval == 'function') { 

        return uneval(obj); 

    } 

    if (typeof obj == 'object') { 

        if (!obj) { 

            return 'null'; 

        } 

        var list = []; 

        if (dom.is(obj,"Array")) { 

            for (var i=0,n=obj.length;i <n;i++) { 

                list.push(dom.toJSON(obj[i])); 

            } 

            return '[' + list.join(',') + ']'; 

        } else { 

            for (var prop in obj) { 

                if(obj[has](prop)) 

                    list.push('"' + prop + '":' + dom.toJSON(obj[prop])); 

            } 

            return '{' + list.join(',') + '}'; 

        } 

    } else if (typeof obj == 'string') { 

        return '"' + obj.replace(/(["'])/g, '//$1') + '"'; 

    } else { 

        return new String(obj); 

    } 

},

toJSON : function(obj) { 

    if(is(window.JSON,"JSON")){ 

        return JSON.stringify(obj) 

    } 

    function f(n) { 

        return n < 10 ? '0' + n : n; 

    } 

    var escapable = /[///"/x00-/x1f/x7f-/x9f/u00ad/u0600-/u0604/u070f/u17b4/u17b5/u200c-/u200f/u2028-/u202f/u2060-/u206f/ufeff/ufff0-/uffff]/g; 

    var meta = { 

        '/b': '//b', 

        '/t': '//t', 

        '/n': '//n', 

        '/f': '//f', 

        '/r': '//r', 

        '"' : '//"', 

        '//': '////'

    }; 

    function _char(c) { 

        return meta[c] ? meta[c] :'//u'+('0000'+(+(c.charCodeAt(0))).toString(16)).slice(-4); 

    } 

    function _string(s) { 

        return '"' + s.replace(escapable, _char) + '"'; 

    } 

    if(is(obj,"Date")){ 

        return  '"' + obj.getUTCFullYear() + '-' + 

        f(obj.getUTCMonth() + 1) + '-' + 

        f(obj.getUTCDate())      + 'T' + 

        f(obj.getUTCHours())     + ':' + 

        f(obj.getUTCMinutes())   + ':' + 

        f(obj.getUTCSeconds())   + 'Z"' ; 

    }else if(is(obj,"Number")){ 

        return isFinite(obj) ? obj+'' : 'null'; 

    }else if(is(obj,"Boolean")){ 

        return  obj+''

    }else if(is(obj,"String")){ 

        return _string(obj) 

    }else if(obj === null){ 

        return "null"

    }else if(is(obj,"Array")){ 

        return '[' + (dom.filter(obj,function(value){ 

            return dom.toJSON(value) !== undefined; 

        })).join(', ') + ']'; 

    }else if(is(obj,"Object")){ 

        var results = []; 

        dom.each(obj,function(value,key){ 

            value = dom.toJSON(value) 

            if (!value) 

                results.push(dom.toJSON(key) + ': ' + value); 

        }); 

        return '{' + results.join(', ') + '}'; 

    }else { 

        return undefined; 

    } 

},

Is函數(shù)

目前最精確的判定方法(不包括自定義類型)

//2011.1.19更新 

        var is = function (obj,type) { 

        return (type === "Null" && obj === null) || 

        (type === "Undefined" && obj === void 0 ) || 

        (type === "Number" && isFinite(obj)) || 

         Object.prototype.toString.call(obj).slice(8,-1) === type; 

    },

用法如下:

//***************示例一,判定數(shù)組與函數(shù) 

        var forEach = function(array,fn,bind){ 

          if(is(array,"Array") && is(Array.forEach,"Function")){ 

            array.forEach(fn,bind); 

          }else{ 

            for(var i=0,n=array.length;i<n;i++){ 

              i in array && fn.call(bind,array[i],i,array) 

            } 

          } 

        } 

//***************示例二,判定null 

var a = null

alert(is(a,"Null")) 

//***************示例二,判定undefined 

var b 

alert(is(b,"Undefined"))

另一個(gè)變種,直接返回表示類型的字符串

var getType = function (obj) { 

  var _toString = Object.prototype.toString,undefined; 

  return obj === null? "Null": 

    obj === undefined ? "Undefined": 

    _toString.call(obj).slice(8,-1); 

};

用法:

var arr = [1,2,3,4] 

      alert(getType(arr));//Array 

      var nil = null

      alert(getType(nil))//Null 

      var und ; 

      alert(getType(und))//Undefined 

      var spans = document.getElementsByTagName("span"); 

      alert(getType(spans)) //HTMLCollection 

      alert(getType(spans[0].childNodes))//NodeList

 

function isA (thing, canon) { 

  // special case for null and undefined 

  if (thing == null || canon == null) { 

    return thing === canon; 

  } 

  return Object.getPrototypeOf(Object(thing)) == Object.getPrototypeOf(Object(canon)); 

function isBool (thing) { 

  return isA(thing, true); 

function isNumber (thing) { 

  return isA(thing, 0) && isFinite(thing); 

function isString (thing) { 

  return isA(thing, ""); 

}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产精品久久精品国产| 国产精品mv在线观看| www国产精品视频| 182在线播放| 91香蕉视频网| 国产情侣一区二区三区| 日韩一区在线看| 国产人妻人伦精品| 欧美肥妇毛茸茸| 黄色av网站在线看| 国产精品腿扒开做爽爽爽挤奶网站| 欧美大尺度做爰床戏| 夜夜夜夜夜夜操| 偷偷要91色婷婷| 国产乱码精品一区二区三区卡| 国产麻豆剧传媒精品国产| 国产不卡精品视频| 九九精品在线| 香蕉免费毛片视频| 中文字幕在线观看视频一区| 久久久久久九九九| 亚洲欧美99| 狠狠躁夜夜躁人人爽天天天天97| 美日韩精品免费| 99日在线视频| 国产日产欧美视频| 国内外成人激情视频| 搞黄网站在线观看| 欧美乱大交xxxxx| 欧美日韩综合| 国产精品成人免费一区久久羞羞| 欧美日韩看看2015永久免费| 日本一二三区视频免费高清| 奇米影视首页 狠狠色丁香婷婷久久综合| 亚洲欧洲闷骚av少妇影院| 97超碰在线公开在线看免费| 亚洲成人激情av| 欧美人成免费网站| 亚洲网站情趣视频| 黄色亚洲大片免费在线观看| 免费一级片在线观看| 成人激情视频在线| 青青国产在线观看| 精品国产一区二区三区性色av| 中文字幕少妇一区二区三区| 免费男同深夜夜行网站| 电影一区二区三区| 不卡在线视频| 在线视频1区| 欧美性猛交xxxx乱大交极品| 亚洲黄色片网站| 亚洲自拍欧美色图| 小早川怜子影音先锋在线观看| 老司机免费视频| 天海翼中文字幕| 人人玩人人添人人澡欧美| 天天做天天爱天天爽综合网| 亚洲视频在线a| 韩国成人一区| 亚洲品质视频自拍网| 久久国产欧美日韩精品| 色综合网站在线| 在线免费黄色网| 五码日韩精品一区二区三区视频| 欧美激情2020午夜免费观看| 91国偷自产一区二区开放时间| 男操女免费网站| 亚洲精品tv久久久久久久久久| 亚洲人成电影网站色mp4| 91精品国产高清一区二区三区| 日本美女一区| 欧美乱大交xxxxx另类| 欧美理论片在线播放| 一级特黄曰皮片视频| 国产免费毛卡片| 国产欧美日韩一区二区三区| 三级黄色片免费看| 国产视频亚洲精品| 国产精品成人69xxx免费视频| 欧美日韩日本视频| 这里只有精品免费| 亚洲美女少妇无套啪啪呻吟| 亚洲综合日韩中文字幕v在线| 色大师av一区二区三区| 国产成人久久777777| 一区二区三区中文字幕精品精品| www.亚洲免费av| 日本中文在线一区| 秋霞a级毛片在线看| 国产美女性感在线观看懂色av| 俄罗斯一级**毛片在线播放| 日韩一区二区免费看| 正在播放一区| xfplay资源站色先锋在线观看| 91精品国产自产在线丝袜啪| 国产在线观看无码免费视频| 精品少妇无遮挡毛片| 欲求不满的岳中文字幕| 99在线精品一区二区三区| 欧美性生交xxxxx久久久| 大香煮伊手机一区| 黄色在线视频网| 亚洲欧洲日产国码无码久久99| 久久丝袜美腿综合| 欧美成人dvd在线视频| 在线观看亚洲视频| 国产乱淫av免费| 免费欧美在线| 大陆av在线播放| av片在线观看网站| 国产激情视频网站| 欧美与亚洲与日本直播| 欧美日韩一区在线观看| 亚洲激精日韩激精欧美精品| 中文字幕日本一区二区| 国产精品黄色大片| 日本欧美黄色| 国产一二三四区在线| 久久国产精品视频| 粉嫩91精品久久久久久久99蜜桃| 欧美a级片网站| 国产成人精品视| 欧洲精品中文字幕| 成人精品电影在线观看| 日本免费视频www| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 盗摄精品av一区二区三区| 国产在线视频自拍| 国产精品国精产品一二| 成人观看视频| 亚洲大胆av| 综合另类专区| 国产精品一区二区久久| 精品国产欧美一区二区五十路| 26uuu国产| 亚洲一二三级电影| 婷婷在线播放| 国产免费一区二区三区最新6| 国产精品久久久久久久7电影| 久久伊人免费视频| 亚洲精品av在线| 91精品美女在线| 尤物网精品视频| ww国产内射精品后入国产| 91片黄在线观看喷潮| 精品一区二区视频| 国产精品99久久久久久似苏梦涵| 亚洲熟妇无码乱子av电影| 邪态动恶图27期gif| 国产在线69| 粉嫩av国产一区二区三区| 在线观看国产精品视频| 日本一区二区三区久久久久久久久不| 天天骑天天射| 91丨porny丨蝌蚪视频| 秋霞毛片大全| 欧美视频中文在线看| 日本女优在线视频一区二区| 在线精品小视频| 扒开腿狂躁女人爽出白浆2| 午夜激情久久久| 久久久国产91| 91精品国产综合久久精品| 久久深夜福利免费观看| 欧美性精品220| 亚洲综合久久av一区二区三区| 激情欧美日韩一区二区| 91伦理视频在线观看| 爱情岛论坛亚洲首页入口章节| 一区二区三区午夜| 91精品一区国产高清在线gif| 日韩av成人高清| 少妇免费视频| 天天综合永久入口| 蜜桃视频中文字幕| 国产三级精品三级在线| 日韩欧美一区二区三区四区| 中文字幕精品一区二区三区精品| 很黄很污的网站| 亚洲黄色影片| www.黄色网址.com| 美女精品视频在线| 黑人巨大精品欧美一区二区小视频| 国产精品影音先锋| 欧美一区二区视频网站| 日韩欧美不卡| 人妻精品一区一区三区蜜桃91| jizz亚洲大全| 区一区二视频| 激情文学综合| 天天色天天操天天| 亚洲欧美制服中文字幕| 五十路六十路七十路熟婆| 中国动漫在线观看完整版免费| 日韩激情中文字幕| 自拍视频一区二区三区| 国产高清不卡一区二区| 天天久久夜夜| 欧美78videosex性欧美| 最新av番号| 国产成人精品av久久| 欧美尺度大的性做爰视频| 精品国产a毛片| 91蜜桃网站免费观看| 欧洲成人午夜免费大片| 欧美xxxx18性欧美| 婷婷综合在线| 久久精品国产99久久99久久久| 久久精品在线免费观看| 日本精品性网站在线观看| 日韩av电影在线播放| 国产三级精品在线| 中文字幕精品久久久久| 国产成人精品一区二区三区网站观看| 久久精品99国产精品| 极品少妇一区二区三区精品视频| 免费黄色激情视频| 岛国精品一区二区三区| 欧美黄免费看| 国产91在线播放九色快色| 欧美一区二区在线不卡| 久久综合桃花网| 亚洲欧美久久234| 久久久久一区二区三区四区| 国产精品美女av| 久久精品一区二区三区不卡免费视频| 精品视频高清无人区区二区三区| 黄色亚洲精品| 欧美美女性视频| 丰满少妇在线观看| 欧美日韩一级黄色片| 久久久国产精品麻豆| 性欧美极品另类| 噜噜噜久久,亚洲精品国产品| 欧美不卡一区二区三区四区| 国产情侣自拍av| 日韩成人黄色片| 亚洲AV成人精品| 北条麻妃在线观看视频| 色噜噜狠狠狠综合欧洲色8| 国产精品一码二码三码在线| 亚洲二区精品| 国产精品久久久久久久久久尿| 日本精品久久久久久久久久| 欧美成人三区| 欧美性大战久久久久| 亚洲三区在线播放| 欧美成人三级电影在线| 久热精品视频在线| 国产h片在线观看| 免费网站永久免费观看| 一区二区在线观看视频在线观看| 国产一区二区伦理| 极品久久久久久久| 日韩电影在线观看一区二区| 久久久久久蜜桃| 各处沟厕大尺度偷拍女厕嘘嘘| 初体验·韩国| 色欲AV无码精品一区二区久久| 国产专区一区| 欧美高清hd| 欧州一区二区| 亚洲综合视频1区| 乱色精品无码一区二区国产盗| 欧美性猛交xxxx乱| 最近中文字幕在线mv视频在线| 精品女人久久久| 国产日产欧美一区二区三区| 国产在线精品日韩| 国产尤物久久久| 97人澡人人添人人爽欧美| 日韩成人在线视频网站| 精品国产av色一区二区深夜久久| 国产91色在线免费| 波多野结衣激情| 亚洲人成在线观看网站高清| 国产精彩免费视频| 亚洲va久久久噜噜噜| 日韩av电影在线观看| 欧美三级午夜理伦三级在线观看| 少妇太紧太爽又黄又硬又爽小说| 黄瓜视频在线观看| 蜜臀久久99精品久久久画质超高清| 亚洲成a人v欧美综合天堂下载| 欧美不卡一二三| 中文在线资源观看网站视频免费不卡| 国产偷国产偷亚洲清高网站| 免费网站黄在线观看| 欧美美女一区二区在线观看| 欧美艳星kaydenkross| 日韩伦理一区二区三区| 成人h视频在线观看播放| 亚洲人成小说网站色在线| 舔足天天操天天射| 五月激情丁香一区二区三区| 欧美片网站免费| 伊人久久大香线蕉综合网站| 久久久久久网站| 国产高清精品在线观看| 精品一区二区免费看| 日韩精品1区2区3区| 青春草免费在线视频| 国产精品国产三级国产普通话蜜臀| 欧美日韩免费观看一区二区三区| 欧美亚洲国产另类| 色偷偷888欧美精品久久久| 中文字幕免费高清| 国产精品久久久亚洲第一牛牛| 欧美日韩夜夜| 成人在线视频免费| 91极品尤物在线播放国产| 捆绑变态av一区二区三区| 亚洲一区二区三区无吗| 一个人看的www日本高清视频| 99re热精品| 国产爆初菊在线观看免费视频网站| 国产精品大尺度| 欧美色区777第一页| 另类图片亚洲另类| 青青视频免费在线观看| 天天综合天天色| 久久av中文| 国产精品一区二区三区免费| 欧美一区91| 噼里啪啦国语在线观看免费版高清版| 中文国产成人精品久久一| 久久久久久久九九九九| 99国产精品免费|