您的位置:首页 > Web前端 > JavaScript

js操作json

2016-08-31 09:12 429 查看
一、什么是json?

json英文全称JavaScriptObjectNotation,是一种易于理解的轻量级数据交换格式。

JSON作用:用于存储和传输数据的格式。通常用于服务端向网页传递数据。

二、语法规则

数据为键/值对。

数据由逗号分隔。

大括号保存对象

方括号保存数组

  json对象的代码示例:

  {"firstName":"John","lastName":"Doe"}

  json数组的代码示例:

  "employees":[
{"firstName":"John","lastName":"Doe"},
{"firstName":"Anna","lastName":"Smith"},
{"firstName":"Peter","lastName":"Jones"}
  ]

三、json的操作

  JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。

  相关代码示例:

  <!DOCTYPEhtml>
  <html>
    <head>
      <metacharset="utf-8">
      <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
      <h2>从JSON字符串中创建对象</h2>
      <p>
        名:<spanid="fname"></span><br>
        姓:<spanid="lname"></span><br>
      </p>
      <script>
        vartxt='{"employees":['+
        '{"firstName":"John","lastName":"Doe"},'+
        '{"firstName":"Anna","lastName":"Smith"},'+
        '{"firstName":"Peter","lastName":"Jones"}]}';

        varobj=eval("("+txt+")");

        document.getElementById("fname").innerHTML=obj.employees[1].firstName
        document.getElementById("lname").innerHTML=obj.employees[1].lastName
      </script>
     </body>
    </html>

    JSON.parse()方法用于将一个JSON字符串转换为对象。

    语法:JSON.parse(text[,reviver])

    参数:

text:必需,一个有效的JSON字符串,

reviver:可选,一个转换结果的函数,将为对象的每个成员调用此函数。

    相关示例:

    <!DOCTYPEhtml>

    <html>

      <head>

        <metacharset="utf-8">
        <title>菜鸟教程(runoob.com)</title>
      </head>
    <body>

      <h2>从JSON字符串中创建一个对象</h2>
      <pid="demo"></p>
    <script>
      vartext='{"employees":['+
      '{"name":"菜鸟教程","site":"http://www.runoob.com"},'+
      '{"name":"Google","site":"http://www.Google.com"},'+
      '{"name":"Taobao","site":"http://www.taobao.com"}]}';
      obj=JSON.parse(text);
      document.getElementById("demo").innerHTML=
      obj.employees[1].name+""+obj.employees[1].site;
    </script>

   </body>
  </html>

  选参:

    <!DOCTYPEhtml>

    <html>
    <head>
      <metacharset="utf-8">
      <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>

      <h2>使用可选参数,回调函数</h2>
      <pid="demo"></p>
      <script>
        JSON.parse('{"p":5}',function(k,v){
        if(k===''){returnv;}
        returnv*2;
        });
        JSON.parse('{"1":1,"2":2,"3":{"4":4,"5":{"6":6}}}',function(k,v){
        document.write(k);//输出当前属性,最后一个为""
        document.write("<br>");
        returnv;//返回修改的值
        });
      </script>

    </body>
   </html>

   
JSON.stringify
方法用于将一个值转为字符串。该字符串应该符合JSON格式,并且可以被
JSON.parse
方法还原。

   语法:JSON.stringify(value[,replacer[,space]]) 

   参数说明:

value:
必需,一个有效的JSON字符串。

replacer:
可选。用于需要转成字符串的属性。。

如果replacer为函数,则JSON.stringify将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回undefined,则排除成员。根对象的键是一个空字符串:""。

如果replacer是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当value参数也为数组时,将忽略replacer数组。

space:
可选,文本添加缩进、空格和换行符,用于增加返回的JSON字符串的可读性。如果是数字,表示每个属性前面添加的空格(最多不超过10个);如果是字符串(不超过10个字符),则该字符串会添加在每行前面。

   相关代码示例:

    <!DOCTYPEhtml>

    <html>
      <head>
        <metacharset="utf-8">
        <title>菜鸟教程(runoob.com)</title>
      </head>
      <body>

        <pid="demo"></p>
        <script>
          varstr={"name":"菜鸟教程","site":"http://www.runoob.com"}
          str_pretty1=JSON.stringify(str)
          document.write("只有一个参数情况:");
          document.write("<br>");
          document.write("<pre>"+str_pretty1+"</pre>");
          document.write("<br>");
          str_pretty2=JSON.stringify(str,null,4)//使用四个空格缩进
          document.write("使用参数情况:");
          document.write("<br>");
          document.write("<pre>"+str_pretty2+"</pre>");//pre用于格式化输出
        </script>

      </body>
    </html>

    由JSON.stringify方法用于允许转换某个对象的数据以进行JavaScriptObjectNotation(JSON)序列化。

    语法:objectname.toJSON()

    参数:objectname必需。需要进行JSON序列化的对象。

    代码示例:

    使用toJSON方法将大写的字符串成员值序列化。在调用JSON.stringify时调用toJSON方法。

    varcontact=newObject();

     contact.firstname="Jesper";

     contact.surname="Aaberg";

     contact.phone=["555-0100","555-0120"];

     contact.toJSON=function(key      varreplacement=newObject();

   for(varvalinthis)
  {
  if(typeof(this[val])==='string')
  replacement[val]=this[val].toUpperCase();
  else
  replacement[val]=this[val]
  }
  returnreplacement;
  };

  varjsonText=JSON.stringify(contact);

  /*ThevalueofjsonTextis:
  '{"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]}'
  */
  以下示例演示如何使用作为Date对象的内置成员的toJSON方法。 

  vardt=newDate('8/24/2009');
  dt.setUTCHours(7,30,0);
  varjsonText=JSON.stringify(dt);

  /*ThevalueofjsonTextis:
  '"2009-08-24T07:30:00Z"'
  */



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: