zoukankan      html  css  js  c++  java
  • js中 json详解

    json的语法可以表示以下三种类型的值。

    1、简单值:可以在json中表示字符串、数值、布尔和null。

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

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

    json不支持变量、函数或对象实例,它就是一种表示结构化数据的格式。

    1.1:简单值:

    如下10,“aa”,json字符串与js字符串最大的区别是json字符串必须使用双引号布尔与null也是有效的json形式。

    2.1:对象

    对象字面量一般写法是:

    1
    2
    3
    4
    5
    6
    var aa ={
         name:"zoumm",
        job :"it",
        age :25
     
    };

      json对象一般这样写的:

    复制代码
       {
        "name":"zoumm",
        "job":"it",
        "age":23,     "school":{
    "name":"大学名", “add”:"中国" } }
    复制代码

    他们的区别是,json对象不用定义变量,末尾不用写分号,切所有的属性名必须加双引号;

    3.1:数组

    一般数组是这样定义的:

      var  aa = [23,"zoumm"];

    json数组是这样定义的

       [ 23,"zoumm" ]

    他们的区别是,json数组不用定义变量,末尾不用写分号;

    在Jquery中实现ajax用post请求后台json数据时,返回了一个html,而不是想要的Json数据,这个问题郁闷了一上午,在网上查的方法一没用。最后终于发现是因为在service方法中引用了“super.service();” 这句话。去掉就解决了。

      下面进入正题:js中如何操作json数据。

    一、要想熟练的操作json数据,就先要了解json数据的结构,json有两种结构:对象和数组。

      1、对象 一个对象以“{”开始,“}”结束。每个“名称”后跟一个“:”;“‘名称/值’ 对”之间使用“,”分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不需要。例如:  var jsonObj={"str":"abc","intstr":1322323456,"max":6753,"time":"2012-10-19"};

        2. 数组是值(value)的有序集合。一个数组以“[” 开始,“]”结束。值之间运用 “,”分隔。

        例如:var jsonList=[{"str":"abc","intstr":1322323456,"max":6753,"time":"2012-10-19"},                           {"str":"cde","intstr":782144556,"max":15400,"time":"2012-10-19"}];

    二、JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。json在传输过程中是以文本形式存在的,即字符串的形式。而在JS中需要操作的是对象,所以需要把json转换成对象,一般用“eval()”函数来实现,例如 :var obj = eval('(' + json+ ')'); 这样就可以随意操作json了。

    三、如果不知道jsonlist对象里的key和value怎样来获得其中的数据?

      for(var i=0;i<jsonList.length;i++){

        for(var key in jsonList[i]){

               alert("key:"+key+",value:"+jsonList[i][key]);

                 }

      }

    用这种方法就可以解析json数据了。

    json解析与序列化

    1:json对象

    json对象有两个方法stringify和parse,他们分别是把js对象序列化成json字符串,和把json字符串解析成原生js值,例如:

     var  aa ={
            name:"zoumm",
            age:23
        };
        var bb = JSON.stringify(aa);
        console.log(bb); //打印出{"name":"zoumm","age":23}

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

    复制代码
    var  aa1 ={
            name:"zj",
            age:25,         tmp:undefined,        say:function(){ console.log(1); } };  var bb1 = JSON.stringify(aa1); console.log(bb1); //打印{"name":"zj","age":25}
    }
    复制代码

    将json字符串传递给json.parse,就得到js的值,如下:

        var cc = JSON.parse(bb1);
        console.log(cc );//打印Object {name: "zj", age: 25}

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

    2:序列化选项

     JSON.stringify()还接受两个参数,这两个参数用于指定不同方式序列化js对象,第一个参数可以是对象也可以使函数,第二个是一个选项,表示是否在json字符串中保留 缩进,
    复制代码
     var book = {
              name :"zoumm",
              age :23,
              job :"it"
        }
        var text = JSON.stringify(book,["name","job"]);//两个参数,参数一:函数或者数组,参数二,截取的数据
      console.log(text)//打印 {"name":"zoumm","job":"it"}
    复制代码
  • 相关阅读:
    android studio Cannot resolve symbol '@drawable/XXX'等问题解决办法
    android面试
    Android动态增量
    客户端传递Cookie到WebView中
    Android事件传递机制
    Activity状态保存的两种方式
    Activity Window View之间的关系
    Git学习笔记
    Android Log命令常用方法
    ListView 中点击Item中的Button删除当前行
  • 原文地址:https://www.cnblogs.com/originate918/p/6370392.html
Copyright © 2011-2022 走看看