一、 JSON.parse 方法

将json串转换成object对象,然后能够用.获取属性值。

var b='{"title":"编号管理","parentName":"装备管理"}';var c=JSON.parse(b);console.log(c);

结果如下图

你的字符串必须符合JSON格式,即键值都必须使用双引号包裹,单引号不行,例如:

二、 JSON.stringify 方法

基本用法:一个对象通过stringify之后变成字符串

var data =[
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];
console.log(data);
var str_json = JSON.stringify(data);
console.log(str_json,'字符串');

结果如下图

  • 1、方法的定义
  • 2、JSON.stringify提供了参数分离出自己需要的那部分数据
  • 3、JSON.stringify提供了参数回调函数做一个映射关系
  • 4、JSON.stringify提供了参数格式化字符串

1、方法的定义

JSON.stringify ( value [, replacer] [ , space] )

参数:

(1)value:必选,要转换的值(包括所有的数据类型,通常是对象或者数组)

(2)replace:可选,用于要转换结果的函数或者数组;如果replace是数组,仅仅是转换具有该键值的成员,成员的转换顺序和键在数组中的顺序一致;如果replace是函数,会传入每一个成员的键和值,使用的是返回值而不是原始值,如果函数返回的是undefined,则排除该成员。查看了JSON2的源码,

 rx_escapable.lastIndex = 0;return rx_escapable.test(string)? "\"" + string.replace(rx_escapable, function (a) {var c = meta[a];return typeof c === "string"? c: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);}) + "\"": "\"" + string + "\"";}
 确认并不会传入每个成员的键和值,而仅仅以空字符串形式调用replacer函数。该函数的实质是自定义的用于转化为JSON字符串的函数。

(3)space:可选, 向返回值JSON 文本添加缩进、空格和换行符以使其更易于读取。

 如果省略space,则将生成返回值文本,而没有任何额外空格。

 如果 space是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。

 如果 space是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。

 如果 space 是长度大于 10个字符的字符串,则使用前 10 个字符。

2、JSON.stringify提供了分离出自己需要的那部分数据

比如说这个场景,我们的数据非常的复杂,有类似头像,昵称,个人签名等,可是我保存在本地,只需要用户名,性别,怎么搞?

方法一:可以用遍历数组重新提取一下

var data =[
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];for(var i=0,new_data=[];i<data.length;i++){new_data.push({name: data[i].name,sex: data[i].sex});
}
var str_json = JSON.stringify(new_data);
console.log(str_json);
VM764:18 [{"name":"程才","sex":"0"},{"name":"程新松","sex":"1"},{"name":"程功","sex":"1"}]

方法二:的确可以这么干,但是JSON.stringify提供了参数分离出自己需要的那部分数据

var str_json = JSON.stringify(data,["name","sex"]);
console.log(str_json);
 

第二个参数只要传入需要的keys数组,就非常轻松的处理这个,结果如下:

3JSON.stringify提供了回调函数做一个映射关系

比如说,我们把sex里的1,0修改为男,女 ,那么第二个参数可以通过回调函数来处理这个映射关系。

var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ["女",'男'][value];}return value;
});
console.log(str_json);

第二个参数很厉害,省去了不少的麻烦,结果如图:

4、JSON.stringify提供了参数格式化字符串

第三个参数,用于格式化字符串

var str_json = JSON.stringify(data,null,'\t');
console.log(str_json);
var str_json = JSON.stringify(data,['name','sex'],'\t');
console.log(str_json);

5、JSON.stringify的妙用-判断数组中是否包含某对象,或判断对象是否相等

let data = [{name:'echo'},{name:'听风是风'},{name:'天子笑'},],val = {name:'天子笑'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//trueval1 = {name:'天笑'};
JSON.stringify(data).indexOf(JSON.stringify(val1)) !== -1;//falselet i = [1,2,3],b = [1,2,3];
JSON.stringify(i) === JSON.stringify(b);//true

JSON字符串--对象之间的相关转换相关推荐

  1. xml和对象之间的互相转换以及json和对象之间的互相转换

    首先先讲json和对象之间的互相转换,因为这个比较简单. 首先引入依赖 <dependency> <groupId>com.alibaba</groupId> &l ...

  2. 十分钟搞懂JSON(JSON对象---JSON字符串---对象 之间的区别)

    好记性不如烂笔头,相信我,看了之后你会彻底搞懂JSON 前言:前天被JSON对象,JSON字符串,JAVA对象搞混了,不知道各自代表的意思,我就查了资料,总结为一篇博文. 另外我想List<Us ...

  3. C#中JSON和对象之间互相转换功能示例

    本文实例讲述了C#实现JSON和对象之间互相转换功能.分享给大家供大家参考,具体如下: 1.首先是声明用户信息对象,DataContract修饰类,表示可以被解析成JSON,DataMember修饰属 ...

  4. Json对象与Json字符串互转(4种转换方式)

    Json字符与Json对象的相互转换方式有很多种: 1. jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以 ...

  5. js中Json对象与Json字符串互转(4种转换方式)

    1>jQuery插件支持的转换方式: 复制代码代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成jso ...

  6. java 转xml 变成两根下划线_XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以...

    首先去官网下载响应JAR包 最少需要两个jar包,一个xstream.jar,一个是xmlpull.jar 首先来看下java对象到xml的转换 package xml; class PhoneNum ...

  7. FastJson之json字符串与javabean的互相转换

    1.基本使用说明 FastJson常用到一下三个类: (1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. (2)JSONObject:fast ...

  8. fastjson对json字符串JSONObject和JSONArray互相转换操作示例

    package com.tapt.instance; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; ...

  9. fastjson对json字符串JSONObject和JSONArray互相转换操作示例java

    package com.tapt.instance; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; ...

最新文章

  1. 【阶段小结】协同开发——这学期的Git使用小结
  2. linux下的access()函数判断文件是否存在、打印时间
  3. mac如何导入python第三方库_Mac系统中python idle导入第三方模块成功,ecplise导入python第三方模块失败解决方法...
  4. 【算法】SVM分类精度为0,结果很烂怎么办?
  5. Android开发之旅:应用程序基础及组件
  6. 什么是Java中的原子操作( atomic operations)
  7. linux学习笔记整理
  8. 4符号代码_ELF文件格式解析器 原理 + 代码
  9. 【数字基带信号】基于matlab数字双相码仿真【含Matlab源码 989期】
  10. JAVA缓存机制浅析
  11. gis怎么提取水系_arcgis水系提取流程(dem)
  12. 时钟倒计时html,jQuery倒计时/计时器/时间插件
  13. 强化学习10——迭代学习
  14. 通俗理解路由器和交换机的区别?
  15. 爬虫 第七讲 MongoDB
  16. 在 MacOS 上使用 Qt 开发 Android APP
  17. hau 1825 第一道拓扑排序题
  18. 微信运营——利用python自动加微信(通往销冠之路)
  19. 什么是GCC,ICC,IAR
  20. .bxl文件导入Altium Designer的方法,及错误解决

热门文章

  1. matlab箭头大小固定,科学网—Matlab 粗箭头绘制 - 肖鑫的博文
  2. Dlink PHP p308av,D-Link系列路由器漏洞挖掘
  3. 路由器接交换机再接无线路由器,应该怎么设置
  4. 微信小程序开发13 云开发:云原生一体化应用开发平台
  5. 田野调查手记·浮山摩崖石刻(九)
  6. java微信扫码登录代码在这里
  7. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
  8. 饭后开车的不良习惯要改正
  9. USB SS-PHY Tuning
  10. crypto-CommonModulusAttack(GXYCTF2019)