1.什么是json?

json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据。

2.如何打印json每个key的值?

    //打印以下json的key值
var obj1 = { 'name': '小颖', 'age': 23, 'sex': '女' };
//实现方法
for (var i in obj1) {
console.log(obj1[i]);
}

3.json和字符串之间的转换

    //字符串转json。
var str_obj1 = '{ "name": "小颖", "age": 23, "sex": "女" }';
var str_obj2 = '[{ "name": "仔仔", "age": 1, "sex": "男" },{ "name": "黑妞", "age": 1, "sex": "女" }]';
console.log('字符串转json')
console.log('************************');
//Javascript支持的转换方式
console.log('Javascript支持的转换方式');
function strToJson(str) {
var json = eval('(' + str + ')');
return json;
}
console.log(eval(2+3));
console.log(eval('2'+'3'));
console.log( typeof eval('2'+'3'));
console.log(eval('"2"+"3"'));
console.log( typeof eval('"2"+"3"'));
console.log(strToJson(str_obj1));
console.log(strToJson(str_obj2)); console.log(JSON.parse(str_obj1));
console.log(JSON.parse(str_obj2));
// 注意:某些低级的浏览器尚不支持JSON.parse()
//《高性能Javascript》一书即指出:警告:关于JSON和eval需要注意的是:在代码中使用eval是很危险的,特别是用它执行第三方的JSON数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身。该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果。如果此方法以备Firfox 3.5 、IE8 及 Safari 4 原生支持。大多数javascript类库包含的JSON解析代码会直接调用原生版本,如果没有原生支持的话,会调用一个略微不那么强大的非原生版本来处理。 //jQuery插件支持的转换方式
console.log('jQuery插件支持的转换方式');
console.log($.parseJSON(str_obj1));
console.log($.parseJSON(str_obj2));
console.log('************************');
//JSON.parse()和jQuery.parseJSON()的区别:有的浏览器不支持JSON.parse()方法,使用jQuery.parseJSON()方法时,在浏览器支持时会返回执行JSON.parse()方法的结果,否则会返回类似执行eval()方法的结果,以上结论参考jquery 1.9.1 得出。
//json转字符串
console.log('json转字符串')
console.log('------------------------');
var obj1 = { "name": "小颖", "age": 23, "sex": "女" }
var obj2 = [{ "name": "仔仔", "age": 1, "sex": "男" }, { "name": "黑妞", "age": 1, "sex": "女" }];
console.log('Javascript支持的转换方式')
console.log(typeof obj1);
console.log(JSON.stringify(obj1));
console.log(typeof JSON.stringify(obj1));
console.log(typeof obj2);
console.log(JSON.stringify(obj2));
console.log(typeof JSON.stringify(obj2));
console.log('------------------------');

打印结果:

4.有关json的面试题

1.打印json对象每个key值。

    //打印以下json的key值
var obj1 = { 'name': '小颖', 'age': 23, 'sex': '女' };
//实现方法
for (var i in obj1) {
console.log(obj1[i]);
}
var obj2 = [{
name: '父亲1',
children: [{
name: '孩子1_1'
}, {
name: '孩子1_2',
children: [{
name: '孩子1_1_1'
}, {
name: '孩子1_1_2'
}]
}]
},{
name:'父亲2',
children: [{
name: '孩子2_1'
}, {
name: '孩子2_2',
children: [{
name: '孩子2_2_1'
}, {
name: '孩子2_2_2'
}]
}]
}];
function logKey(json){
json.map(function(item){
if(item.children){
console.log(item.name);
logKey(item.children);
}else{
console.log(item.name);
}
});
}
logKey(obj2);

2.JSON.parse()、$.parseJSON()、JSON.stringify()

    //将下面的字符串转json。
var str_obj1 = '{ "name": "小颖", "age": 23, "sex": "女" }';
var str_obj2 = '[{ "name": "仔仔", "age": 1, "sex": "男" },{ "name": "黑妞", "age": 1, "sex": "女" }]';
console.log(JSON.parse(str_obj1));//{name: "小颖", age: 23, sex: "女"}
console.log(JSON.parse(str_obj2));//{name: "仔仔", age: 1, sex: "男"},{name: "黑妞", age: 1, sex: "女"}
console.log($.parseJSON(str_obj1));//{name: "小颖", age: 23, sex: "女"}
console.log($.parseJSON(str_obj2));//{name: "仔仔", age: 1, sex: "男"},{name: "黑妞", age: 1, sex: "女"}
//将下面的json转为字符串
var obj1 = { "name": "小颖", "age": 23, "sex": "女" }
var obj2 = [{ "name": "仔仔", "age": 1, "sex": "男" }, { "name": "黑妞", "age": 1, "sex": "女" }];
console.log(JSON.stringify(obj1));//{"name":"小颖","age":23,"sex":"女"}
console.log(JSON.stringify(obj2));//[{"name":"仔仔","age":1,"sex":"男"},
//{"name":"黑妞","age":1,"sex":"女"}]

3.用sort对json进行升序和降序排序。

升序:

    var arry = [1, 6, 2, 7, 5, 9, 0];
var obj = [{ "name": "小颖", "age": 23, "sex": "女" }, { "name": "彤彤", "age": 13, "sex": "女" }, { "name": "老刘", "age": 26, "sex": "男" }, { "name": "坑坑", "age": 25, "sex": "男" }]; function ascending(v1, v2) {
if ((typeof v1) === 'object' && (typeof v2) === 'object') {
return v1.age - v2.age;
} else {
return v1 - v2;
}
}
//升序
console.log('*******升序*******');
console.log(arry.sort(ascending));
console.log('调用sort后arry:' + arry);
obj.sort(ascending);
console.log('调用sort后obj:');
console.log(JSON.stringify(obj));

打印结果:

降序

    var arry = [1, 6, 2, 7, 5, 9, 0];
var obj = [{ "name": "小颖", "age": 23, "sex": "女" }, { "name": "彤彤", "age": 13, "sex": "女" }, { "name": "老刘", "age": 26, "sex": "男" }, { "name": "坑坑", "age": 25, "sex": "男" }]; function descending(v1, v2) {
if (typeof v1 === 'object' && typeof v2 === 'object') {
return -(v1.age - v2.age);
} else {
return -(v1 - v2);
}
}
//降序
console.log('-------降序-------')
console.log(arry.sort(descending));
console.log('调用sort后arry:' + arry);
obj.sort(descending);
console.log('调用sort后obj:');
console.log(JSON.stringify(obj));

打印结果:

json的那些事的更多相关文章

  1. 开发过程中关于JSON的那些事

    在使用过程中,对JSON了解的还不够,特地整理一下,用于个人学习和知识参考. 1.IBM的json入门指南    json官网 2.javaweb中发送接收解析问题 3.Java解析json,以及js ...

  2. 关于JSON的那些事儿

    JSON的那些事儿 曾经有一段时间,XML是互联网上传输结构化数据的事实标准,其突出特点是服务器与服务器间的通信.但是业内不少人认为XML过于繁琐.冗长,后面为了解决这个问题也出现了一些方案,但是由于 ...

  3. 遍历json数组实现树

    今天小颖在工作中遇到要遍历树得问题了,实现后,怕后期遇到又忘记啦,所以记录下嘻嘻,其实这个和小颖之前写过得一篇文章    json的那些事    中第4点有关json的面试题有些类似. 数组格式: v ...

  4. 原生Ajax讲解

    典型的http通信:浏览器向服务器发出请求,服务器向客户端返回响应,浏览器重新加载页面,这种不连续的页面加载方式导致用户的体验变得杂乱,缺乏连贯性. 如: 在一般的web应用程序中,用户填写表单字段然 ...

  5. 关于ajax的跨域

    在前端开发中,跨域是经常遇到的问题,也是面试最喜欢问的问题,究其根本原因,是浏览器的同源策略所致,是浏览器为了避免不同域名不能共享cookie以及locationstorage等等,发起请求的时候无法 ...

  6. Appengine直接下载文件并保存到google drive

    一直对下载文件比较感兴趣.前些日子无意搜到google 推出一项服务,可以直接将文件下载到google drive中,原型猛戳这里,但有限额限制.一时脑洞大开,可不可以在appengine 上架设服务 ...

  7. C# Ajax 技术

    Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写.下面是 Ajax 应用程序所用到的基本技术:• HTML 用于建立 Web 表单并确定应用程 ...

  8. 爬虫学习笔记2requests库和beautifulsoup4库学习笔记

    目录 1.requests库 1.1 安装 2.beautifulsoup4 2.1 常用方法 2.2 bs4 中四大对象种类 2.3 遍历文档树 2.4 搜索文档树 查询id=head的Tag 查询 ...

  9. [HTTP那些事] JSON数据

    随着Android的发展,各路大神的贡献,我们可用的轮子越来越多.比如HTTP请求框架,有自家的Volley,Square的okhttp, async-http-lib, 还有聚合版的xUtils以及 ...

随机推荐

  1. [转载] 基于zookeeper、连接池、Failover/LoadBalance等改造Thrift 服务化

    转载自http://blog.csdn.net/zhu_tianwei/article/details/44115667 http://blog.csdn.net/column/details/sli ...

  2. PowerShell 操作 Azure Blob Storage

    本文假设已经存在了一个 Azure Storage Account,需要进行文件的上传,下载,复制,删除等操作.为了方便查看 PowerShell 代码执行的结果,本文使用了 MS 发布的一个 Azu ...

  3. flask 之定时任务开发

    最近开发我的接口测试平台 ,但是遇到了一个需求,需要开发定时任务,于是百度搜索,找到了这么一个叫 pFlask-APScheduler然后开始了我的第一次的学习,于是乎, 需求是这么的: 1.添加定时 ...

  4. 使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端

    预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 第一部分: http://www.cnblogs.com/cgzl/p/7780559.html 第二 ...

  5. Chapter 7:Linking

    概述: 在linux上,从c源码到可执行文件主要需要经历translator(compiler.assembler)生成object file,再经由linker连接成executable objec ...

  6. socket.io 入门篇(三)

    本文原文地址:https://www.limitcode.com/detail/5926e3a056fba70278bf2044.html 前言 上篇我们介绍了 socket.io 中room的概念和 ...

  7. listview相关代码整理

    虽然listview已经慢慢被替代了,  不过还是整理下 , 留作纪念吧 /** * 获取 listview 实际滚动的距离. [ 相对于listview的第一个项目左上角.] * * @return ...

  8. c语言的预处理指令分3种   1> 宏定义   2> 条件编译   3> 文件包含

    宏简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 所有的预处 ...

  9. test only

    Test TinyMCE only , Test Link

  10. php代码中的细节问题

    本次主要谈及工作中关于注销功能中的路径设置及session的清除问题之前的调试一直忽略了session的功能,以至于每次使用__ROOT__/index.php/home/Student/logout ...