json的那些事

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));

打印结果:

原文地址:https://www.cnblogs.com/yingzi1028/p/8127693.html

时间: 2024-08-07 02:37:32

json的那些事的相关文章

PHP和JSON的一些事

这里已经说得很仔细了 http://www.ruanyifeng.com/blog/2011/01/json_in_php.html PHP和JSON的一些事,码迷,mamicode.com

关于JSON的那些事儿

JSON的那些事儿 曾经有一段时间,XML是互联网上传输结构化数据的事实标准,其突出特点是服务器与服务器间的通信.但是业内不少人认为XML过于繁琐.冗长,后面为了解决这个问题也出现了一些方案,但是由于其结构很严格,这些问题还是不能从根本上得到解决.随着Web的不断发展,慢慢的出现了一种轻量级的数据格式——JSON,它的出现受到很多编程人员的喜爱,这篇文章主要讲关于JSON的那些事. (注:这边文章主要讨论的是javascript中的JSON操作,故很多东西只是针对Javascript来说) [J

JSON不支持Javascript中特殊的值undefined和function

先让我写了一遍的二叉树遍历,可惜当时考虑太多,在二叉树的初始化上浪费了太多时间,其实简单的对象访问和递归就可以解决一切,说到底怪自己准备不好,随后问了些优化的问题,比如避免重绘回流什么的,而后紫府大神询问我部门选择,我选了UC(可能因为这个部门不招人,给失败埋下了伏笔) 当然真实的系统不会像上述代码这样写死内容,一般用户通过后台数据查询,然后再根据后台数据动态创建拓扑节点.连线.组.子网等图元内容,并填充如图元名字.连线颜色.告警内容等属性信息. 从连接选项卡能看到检测到相机,是笔记本自带的摄像

Model到Presenter的数据传递过程需要通过回调

2.1 python依赖库 使用python的markdown库来转换md文件到html依赖两个库: pip install markdown pip install importlib 2.2 核心代码 核心代码其实只有一句,执行 markdown.markdown(text)就可以获得生成的html的原文. input_file = codecs.open(in_file, mode="r", encoding="utf-8") text = input_fil

Ajax提高篇(4)在请求和响应中使用 XML(2)

----前言 在 Ajax 应用程序中,使用 XML 作为发送数据的格式的理由很少,但使服务器向 客户机回发 XML 的理由很多. 理由:(1)客户机以名称/值对发送请求(2)服务器无法(以一种标准方式)发送名称/值对 在大多数情况下,客户机不需要使用 XML,因为他们会使用名称/值对发送请求.因此,您可能会发送一个这样的名称:name=jennifer.只需简单地在连续的名称/值对之间添加一个 "与" 符号(&),即可将其放在一起,就像这样:name=jennifer&

关于Json的那点事

说明: 说明一点JS是直接支持Json的 所以可以直接如下写: var a={"Age":28,"LastLoginTime":"2011-01-09 01:00:56","Name":"张三"};  直接是json对象 而不必 写成: var a=’{"Age":28,"LastLoginTime":"2011-01-09 01:00:56",&

JSON跨域读取那点事(JSONP跨域访问)

最近在码一个小项目,需要远程读取json.因为需求很少,如果引用jquery使用其getjson方法就显得很浪费嘛= = 这篇文章很详细的解释了JSON跨域读取的前世今生,把原理讲得很透彻.特此分享. 原文链接:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 前言: 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强

网络接口协议 JSON 解析 Crash 的哪些事

我们在与服务器对接是常因为服务端修改和升级手机端出现Crash:一个好的容错机制是不应该出现Crash的:下在我们来看看常见的问题. 这是一个非常常用的JSON 这是对上面JSON解析的代码 如果服务端有一个接口不小心变成如下这样 (把code这个从字符串转成数字类型了),这个时候用上面的代码,你的客户端就会Crash: 面对上面的问题把代码完善一下 上面代码还是不够完善,我们再完善一下 这样问题是解决了,有没有办法无论服务器端给我们是字符串类型还是数字类型我们都兼容呢?代码设想如下: 在iOS

Day4 - 迭代器&生成器、装饰器、Json & pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青