JS的json对象

** json可以表示以下三种类型的值。**? ? ?
1、简单值:可以在json中表示字符串、数值、布尔和null。

2、对象:对象作为一种复杂的数据类型,表示一组有序的键值对儿。

3、数组:数组也是一种复杂的数据类型,表示一组有序的值列表,可以通过数值索引来访问其中的值。

json不支持变量、函数或对象实例,它就是一种表示结构化数据的格式
1)映射用冒号(“:”)表示。名称:值
2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}
4) 并列数据的集合(数组)用方括号(“[]”)表示。
[
{名称1:值,名称2:值2},

{名称1:值,名称2:值2}

]
5 )元素值可具有的类型:string, number, object, array, true, false, null

json数组

 //json数组
    var jsonList=[
        {"str":"abc",
         "intstr":1322323456,
         "max":6753,
         "time":"2012-10-19"},
         {"str":"cde",
         "intstr":782144556,
          "max":15400,
          "time":"2012-10-19"}
        ];
     for(var i=0;i<jsonList.length;i++){

      for(var key in jsonList[i]){

         alert("key:"+key+",value:"+jsonList[i][key]);  //key:time    value:2012-10-19

        }

    }

循环弹出数组中的每个对象:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
枚举对象和json对象的区别
json对象不用定义变量,末尾不用写分号,类似数组,具有length属性,且所有的属性名必须加双引号

 //枚举对象:
    var message1 ={
        name:"dabao",
        age:21,
        sex:"男",
        doing: function(){
            return "唱歌"
        }
    };
    console.log(message1.age); //21

    //json对象 
    var message2={
        "name" : "xiaobao",
        "age":21,
        "sex":"女",
        "doing": function(){
            return "看剧"
        }
    }
    console.log(message2.name); // xiaobao
    console.log(message2);   //{name: "xiaobao", age: 21, sex: "女", doing: ƒ}

json数据格式
后台返回的数据格式,如果是对象, 直接使用 如果返回的是json字符串格式,需要进行转化为json对象

json对象有两个方法 stringify 和 parse

1. JSON.stringify()? 把js对象序列化成json字符串

? ? ?

  var list=[
        {name:"lifan",age:18},
        {name:"lifan1",age:19},
        {name:"lifan2",age:20},
        {name:"lifan3",age:21}

    ]
      var list1= JSON.stringify(list);
      console.log(list1); /* [{"name":"lifan","age":18},{"name":"lifan1","age":19},
                               {"name":"lifan2","age":20},{"name":"lifan3","age":21}]  */

在序列化js对象时,所有函数与原型成员都会有意忽略,
不体现在结果中,此外,值为undeined的任何属性也会被跳过。

 var  a1 ={
        name:"qian",
        age:35,
        sex:"男" ,
        tmp:undefined,
        say:function(){
            console.log(1);
        }
    };
    var b1 = JSON.stringify(a1);
    console.log(b1);    //打印{"name":"qian","age":35,"sex":"男"}  省略了值为函数和undefined的属性

JSON.stringify(参数1,参数2)还接受两个参数,这两个参数用于指定不同方式序列化js对象,
参数一:函数或者数组;
参数二,截取的数据,表示是否在json字符串中保留 缩进

     var b2=JSON.stringify (a1,["name","sex"]);
     console.log(b2); //{"name":"qian","sex":"男"}

2.JSON.parse()或者 eval():json类型的字符串转化为json对象

JSON.parse( );

      var list2=JSON.parse (list1);
      console.log(list2);  /*  [{name: "lifan", age: 18},{name: "lifan1", age: 19},
                              {name: "lifan2", age: 20}, {name: "lifan3", age: 21}]   */

虽然list2 与list 有相同的属性,但是他们是独立的,没有任何关系的对象

eval() :
函数可计算某个字符串,并执行其中的的 JavaScript 代码。

    var list3=eval(list1);
    console.log(list3);   /*  [{name: "lifan", age: 18},{name: "lifan1", age: 19},
                                {name: "lifan2", age: 20}, {name: "lifan3", age: 21}]   */

遍历数组list4

 var list4=[
        {name:"lifan",age:18},
        {name:"lifan1",age:19},
        {name:"lifan2",age:20},
        {name:"lifan3",age:21}

    ];
    //遍历数组list4
    for(var i= 0;i<list4.length;i++){
        console.log(list4[i].name);    //lifan lifan1 lifan2  lifan3
    }

输出结果为:
lifan
lifan1
lifan2
lifan3

for in 的用法
for…in 语句用来遍历数组内的元素
for…in 语句用于对数组或者对象的属性进行循环操作。
for … in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
in 后边是一个集合

语法:
for (变量 in 对象)
{
在此执行代码
}

key 表示属性(键值), obj[key] 表示属性对应的值

    var obj = {
        A:666,
        B:"Ray",
        C:true,
        D:function(){
            console.log(5);
        }
    }
    /*如果想遍历对象obj中的所有键值,一般是用以下方式*/
    for(var key in obj){
        console.log(key,obj[key]) ; //key 表示属性, obj[key] 表示属性对应的值
    }

输出:
A 2
B Ray
C true
D function (){ console.log(5);}

 var a=[1,2,3,4];
    for(var key in a)
    {
        console.log(a[key]);
    }

输出:
1
2
3
4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值