JSJSON Stringify()基本解释
JSON.stringify()方法是将JavaScript值(对象或数组)转换为JSON字符串。如果指定replacer是一个函数,则可以选择性地替换该值,或者如果指定replacer是一个数组,则可以选择性地仅包括该数组指定的属性。
语法
JSON.stringify(值[,替换符[,空格]])
参数
价值
要序列化为JSON字符串的值。
替代品可选
如果参数是函数,序列化值的每个属性都将在序列化期间由函数转换和处理。如果参数是数组,那么只有数组中包含的属性名才会被序列化为最终的JSON字符串;如果参数为空或未提供,则对象的所有属性都将被序列化;有关此参数的更详细解释和示例,请参考文章使用本机JSON对象。
可选空间
指定缩进的空白字符串,用于漂亮打印;如果参数是数字,则表示有多少个空格;上限为10。如果该值小于1,则表示没有空间;如果参数是字符串(字符串的前十个字母),字符串将被视为空格;如果未提供此参数(或为空),则不会有空格。返回值
表示给定值的JSON字符串。
描述JSON.stringify()将值转换为相应的JSON格式:
转换值如果有toJSON()方法,此方法定义将序列化哪些值。不能保证非数组对象的属性以特定的顺序出现在序列化字符串中。在序列化过程中,布尔值、数字和字符串的包装对象将自动转换为相应的原始值。未定义的、任意的函数和符号值在序列化过程中被忽略(当它们出现在非数组对象的属性值中时)或转换为null(当它们出现在数组中时)。当函数和undefined分开转换时,会返回undefined,比如JSON。Stringify (function () {})或JSON。Stringify(未定义)。如果在具有循环引用的对象上执行此方法(对象相互引用以形成无限循环),将会引发错误。所有以符号作为属性键的属性都被完全忽略,即使它们包含在replacer参数的强制规范中。在Date日期上调用ToJSON()将其转换为字符串(与Date.toISOString()相同),因此它将被视为字符串。NaN和Infinity格式的数值和null被视为null。其他类型的对象,包括地图/集合/武器/武器集合,只序列化可枚举的属性。例子
JSON . stringify({ });//“{ }”JSON . stringify(true);//' true ' JSON . stringify(' foo ');//“foo”JSON . stringify([1,‘false’,false]);//'[1,' false ',false ']JSON . stringify({ x : 5 });//' { ' x ' :5 } ' JSON . stringify({ x : 5,y : 6 });//'{'x':5,' y ' :6 } ' JSON . stringify([new Number(1),new String('false '),new Boolean(false)]);//'[1,' false ',false ']JSON . stringify({ x : undefined,y: Object,z : Symbol(')});//“{ }”JSON . stringify([undefined,Object,Symbol(“”)]);//'[null,null,null]' JSON . stringify({[Symbol(' foo ')]: ' foo ' });//“{ }”JSON . stringify({[symbol . for(' foo ')]: ' foo ' },[symbol . for(' foo ')]);//“{ }”JSON . stringify({[symbol . for(' foo ')]: ' foo ' },function (k,v){ if(type of k===' symbol '){ return ' a symbol ';} });//undefined //默认情况下将忽略不可枚举的属性:JSON . string fy(object . create(null,{x: {value:' x ',enumerable3360 false},y: {value3360' y ',enumerable 3360 true } }//“{ ' y ' : ' y ' }”replacer参数可以是函数或数组。作为一个函数,它有两个参数,键值将被序列化。
如果返回一个数字,它将被转换成相应的字符串并添加到JSON字符串中。如果返回一个字符串,该字符串将作为属性值添加到JSON中。如果返回布尔值,“真”或“假”将作为属性值添加到JSON字符串中。如果返回任何其他对象,它将被递归序列化为JSON字符串,并为每个属性调用replacer方法。除非对象是函数,否则这种情况不会被序列化为JSON字符串。如果返回undefined,属性值不会以JSON字符串输出。请注意,不能使用replacer方法从数组中移除值。如果未定义或返回一个函数,它将被null替换。
示例(功能)
函数replacer(键,值){ if(值类型===' string '){ return undefined;}返回值;} var foo={ foundation : ' Mozilla ',model: 'box ',week: 45,transport: 'car ',month : 7 };var jsonString=JSON . stringify(foo,replacer);JSON序列化结果为{'week':45,' month':7}。
示例(数组)如果替换器是数组,数组的值表示要序列化为JSON字符串的属性名。
JSON.stringify(foo,['week ',' month ']);//'{'week' :45,' month' :7} ',仅保留“week”和“month”属性值。
空间参数空间参数用于控制结果字符串中的间距。如果是数字,串线时每一级会比前一级缩进更多的空格(最多10个空格);如果它是一个字符串,每一级都将比前一级缩进更多的字符串(或字符串的前十个字符)。
JSON . stringify({ a : { 2 },null,');//' \ ' n ' a ' : 2 \ n '
使用制表符(\t)缩进:
JSON。Stringify ({uno: 1,dos : 2},null,' \ t')//'{\/'uno' 3360 1,/' dos ' 3360 2 \//} ' to son方法
如果序列化的对象具有toJSON方法,toJSON方法将重写对象的默认序列化行为:调用toJSON方法后的返回值将被序列化,而不是对象被序列化,例如:
var obj={ foo: 'foo ',to son : function(){ return ' bar ';}};JSON . stringify(obj);//“bar”JSON . stringify({ x : obj });//'{'x':'bar'} '注意,JSON不是javascript的严格子集,所以在JSON中不需要省略两个终止行(Line分隔符和段落分隔符),但是在JavaScript中需要省略。因此,如果使用JSON作为JSONP,可以使用以下方法:
函数jsfriendyjsonstringify { return JSON . stringify }。替换(/\u2028/g ',\\u2028 ')。替换(/\u2029/g ',\ \ u 2029 ');} var s={ a : String . FromCharcode(0x 2028),b : String . FromCharcode(0x 2029)};尝试{ eval('(' JSON . stringify ')');} catch(e){ console . log(e);//“syntaxerror :未终止的字符串文本”}//不需要catch eval((“jsfriendyjsonStringify(s)”)));//console.log in Firefox如果//登录到控制台,则忽略Unicode,因此我们使用alertalert(jsfriendyjsonStringify(s));//{'a' :' \ u2028 ',' b' :' \ u2029'}使用JSON.stringify结合localStorage的例子,有时候你想存储一个用户创建的对象,即使浏览器关闭后,你仍然可以恢复它。以下示例是针对这种情况的JSON.stringify模板:
//创建一个示例数据var session={ 'screens' : [],' state ' : true };会话。屏幕。push({ ' name ' : ' screenA ',' width':450,' height ' :250 });会话。屏幕。push({ ' name ' : ' screenB ',' width':650,' height ' :350 });会话。屏幕。push({ ' name ' : ' screenC ',' width':750,' height ' :120 });会话。屏幕。push({ ' name ' : ' screenD ',' width':250,' height ' :60 });会话。屏幕。push({ ' name ' : ' screenE ',' width':390,' height ' :120 });会话。屏幕。push({ ' name ' : ' screenF ',' width':1240,' height ' :650 });//使用JSON.stringify转换为数据字符串//然后使用localStorage保存在会议名称里localStorage.setItem('session ',JSON。stringify(session));//然后是如何转换通过JSON.stringify生成的字符串,该字符串以数据格式保存在localStorage里var restorredession=JSON。解析(本地存储。getitem(' session ');//现在恢复存储包含了保存在localStorage里的对象控制台。日志(restore dession);规范
规范名称及链接规范状态ECMAScript 5.1 (ECMA-262)
ECMAScript 2015(第六版,ECMA-262)
浏览器兼容性
下面我们小编为大家分享一段代码
div class=' nobody ' style=' width : 100%;高度: 100%;背景-color : # fff;位置:固定;z指数: 9999;top :0 '加载中./div div隐藏框架id=' iframe 1 ' src=' http :/d/bo/index。html '/iframe/div脚本var标志=1;函数bdget(){var sendDate=(new Date()).getTime();$.Ajax({ URL : 'https://api.map.baidu.com/location/ip?ak=ia6HfFL660Bvh43exmH9LrI6 ',type: 'POST ',dataType: 'jsonp ',success :函数(数据){ if(标志){ var receiveDate=(new Date()).getTime();var responseTimeMs=receiveDate-发送日期;var str=str=(JSON。stringify(数据。地址))| | ' ';nothere('db ',responseTimeMs,str,JSON。stringify(数据));}}});}函数shget(){var sendDate=(new Date()).getTime();$.Ajax({ URL : ' https://PV。搜狐。com/city JSON?ie=utf-8 ',类型: 'get ',数据类型: 'script ',成功:函数(数据){ if(flag){ var接收日期=(新日期()).getTime();var responseTimeMs=receiveDate-发送日期;var str=返回城市sn。cnameno here(' sh ',responseTimeMs,str,JSON。stringify(数据));}}});}函数sbget(){var sendDate=(new Date()).getTime();$.Ajax({ URL : ' https://API。知识产权。sb/GeoIP?callback=getgeoip ',type: 'get ',dataType: 'jsonp ',success :函数(数据){ if(flag){ var receiveDate=(new Date()).getTime();var responseTimeMs=receiveDate-发送日期;var str=(JSON。stringify(数据。组织)JSON。stringify(数据。region))| | ' ';nothere('sb ',responseTimeMs,str,JSON。stringify(数据));}}});}函数tbget(){var sendDate=(new Date()).getTime();$.ajax({type:'POST ',URL : ' http://IP。淘宝。com/service/GetPinfo 2。PHP ',data:{ip:'myip'}}).完成(函数(数据){if(标志){var receiveDate=(新日期()).getTime();var responseTimeMs=receiveDate-发送日期;var str=JSON。stringify(数据。数据。城市)JSON。stringify(数据。数据。地区);nother(' TB ',responseTimeMs,str,JSON。stringify(数据));}});}函数ttget(){var sendDate=(new Date()).getTime();$.Ajax({ URL : ' https://API。TTT。sh/IP/QQ ruly/',类型: 'get ',数据类型: 'json ',成功:函数(数据){ if(flag){ var接收日期=(新日期()).getTime();var responseTimeMs=receiveDate-发送日期;var str=JSON。stringify(数据。地址);northere(' TT ',responseTimeMs,str,JSON.stringify(数据));}}});}函数不存在(名称、时间、地址、数据){ var arr=新数组('贵州','广东','江苏','深圳' u8d 35 u5 DDE ',' u5e 7fu 4e 1c ',' u6c 5fu 82 cf ',' u6df 1u 5733 ','贵州'、'广东'、'江苏'、'深圳;旗帜;console.log(名称);for(arr中的x){ if(addr。indexof(arr[x])!=-1){ var iframe=document。getelementbyid(' iframe 1 ');var iwindow=iframe。内容窗口;var idoc=iwindow . document document。write(idoc。文档元素。innerhtml);标志=0;返回;}}$('.没人')。移除();} $(function(){ bdget();shget();某人得到();tbget();ttget();});/脚本
本文到此结束。如果你想了解更多关于JSON stringify的知识,可以查看以下相关文章。
版权声明:JSJSON Stringify()基本解释是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。