全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JSON 数据详解及实例代码分析

 JSON 数据详解

一、json值的类型

1.简单值: 可以表示字符串,数值,布尔值,null不支持undefined(json的数值表示: 2 )

2.对象: 一组有序的键值对,每个键值对的值可以是简单值,也可以是复杂数据类型。(json的字符串:“hello world”)。json字符串与JavaScript字符串的区别,json必须用双引号。

3.数组:一组有序值的列表,数组的值可以是简单值,也可以是复杂数据类型。

不支持变量,函数,以及对象实例

二、json对象与javascript对象

区别:

  //javascript对象
   var obj = {
    name: "liu",
    age: 33,
   };


   // json对象
   {
    "name": "liu",
    "age": 33,
   }

  • 没有声明变量(json中没有变量的说法)
  • 没有末尾分号()
  • json中属性也要加双引号

三、字符串与json对象转换

1、JSON.parse()。parse把字符串解析成原生javascript值(javascript对象);每个属性名都必须用双引号

var str = '{"name":"huangxiaojian","age":"23"}';
console.log(JSON.parse(str)); //Object { name: "huangxiaojian", age: "23" }

接收另一个参数,为区别JSON.stringify()的过滤函数(过滤器), 因而叫还原函数。如下:

var book = {
     title: "hello",
     author: [ "apple" ],
     year: 300,
     releaseDate: new Date(2016)
    };

    var jsonText = JSON.stringify( book )
    var bookCopy = JSON.parse( jsonText, function( key, value ) {
     if (key == "releaseDate" ) {
      return new Date( value );
     } else {
      return value;
     }
    } );
    console.log( bookCopy.releaseDate.getFullYear() );

以上代码book对象,有个releaseDate属性,保存Date对象,经过序列化后变成有效的JSON数据字符串,然后经过解析又在bookCopy中还原为一个Date对象,当遇到releaseDate键值时,会基于相应的值创建一个新的Date对象,结果就是bookCopy.releaseDate属性中保存一个新的Date对象。

2、JSON.stringify( object, selector, retract ) 对象,过滤器(数组或函数),保留缩进。

JSON.stringify()把json对象序列化为字符串。(忽略函数、原型)

var a = {a:1,b:2};
console.log(JSON.stringify(a)); //{"a":1,"b":2}不包含任何空格字符或缩进

3、JSON.stringify()第二个参数,过滤器为数组

过滤器:可以使数组(如果是数组,就把数组中有的属性保留),也可以是函数(如果是函数,传两个参数:属性和属性值)。

var person = {
 name: "liu",
 age: 33,
 eat: [ "apple" ],
 sex: "man"
}
var jsonText = JSON.stringify( person, ["eat", "age" ] )
console.log( jsonText ) //{"eat":["apple"],"age":33}

4、JSON.stringify()第二个参数为函数

函数:函数的两个参数()。switch中参数是属性名(必须字符串)。如果是undefined则忽略属性,(这个value参数是整个序列化后的对象)

特别注意,value在《javascript高级程序设计第三版》中表述和我的不同。可能是我的理解有问题,但是我测试了,结果也是序列化后的值。谁能解决了可以告诉我。(page:566~567)

 var person = {
   "name": "liu",
   "age": 33,
   "eat": [ "apple" ],
   "sex": "man"
  }
  var jsonText = JSON.stringify( person, function( key, value ) {
   // console.log( value )
   switch("eat") {
    case "eat":
    return [3,4,5,5,5].join(",");
    case "age":
    return 33;
    case "sex":
    return undefined;
    default:
    return value;            
   }
  } )
  console.log( jsonText ) //"3,4,5,5,5"

5、缩进,最大缩进为10。超过10 会转换为10

 var person = {
   "name": "liu",
   "age": 33,
   "eat": [ "apple" ],
   "sex": "man"
  }
  var jsonText = JSON.stringify( person, null, 4 ) 
  console.log( jsonText )


/////////////////////////结果,带有格式////////////////////
{
 "name": "liu",
 "age": 33,
 "eat": [
  "apple"
 ],
 "sex": "man"
}

 

  //特别的缩进方式
  var jsonText = JSON.stringify( person, null, "---" ) 
  console.log( jsonText )
/////////////////////////结果,带有格式////////////////////
{
---"name": "liu",
---"age": 33,
---"eat": [
------"apple"
---],
---"sex": "man"
}

6、toJSON()方法,返回自身的json数据格式。

 var date = new Date()
  console.log( date.toJSON() ) 

 //person自身没有json数据格式,这是错的。
  var person = {
   "name": "liu",
   "age": 33,
   "eat": [ "apple" ],
   "sex": "man"
  }
console.log( person.toJSON() ) 

7、为对象添加toJSON()方法,返回字符串则是字符串格式,对象则是对象格式,单个数值就是数值格式。

var person = {
     "name": "liu",
     "age": 33,
     "eat": [ "apple" ],
     "sex": "man",
     "toJSON": function () {
      return this.age
     }
    }
    console.log( person.toJSON() ) // 33

toJSON()可以做过滤器补充

8、假设一个对象传入JSON.stringify(),序列化该对象的顺序

  1. 存在toJSON()方法,且能获取有效值,则调用该方法,否则按默认顺序序列化。
  2. 如果提供了第二个参数,应用这个函数过滤器,传入函数过滤器的值是第1步的返回值。
  3. 对第2步返回的每个值进行序列化。
  4. 如果提供了第三个参数,执行相应的格式化。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# JSON  # 数据详解  # 数据  # 数据实例详解  # JS对象与JSON格式数据相互转换  # $.ajax json数据传递方法  # android客户端从服务器端获取json数据并解析的实现代码  # jQuery Ajax异步处理Json数据详解  # JS解析json数据并将json字符串转化为数组的实现方法  # Android中使用Gson解析JSON数据的两种方法  # 浅析ajax请求json数据并用js解析(示例分析)  # jquery的ajax异步请求接收返回json数据实例  # JAVA对象JSON数据互相转换的四种常见情况  # 序列化  # 第二个  # 键值  # 则是  # 不支持  # 双引号  # 这是  # 有效值  # 数据格式  # 有个  # 告诉我  # 也要  # 希望能  # 就把  # 做过  # 谁能  # 第三个  # 谢谢大家  # 转换为  # 创建一个 


相关文章: 网站按钮制作软件,如何实现网页中按钮的自动点击?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  建站OpenVZ教程与优化策略:配置指南与性能提升  学校为何禁止电信移动建设网站?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  如何用PHP快速搭建CMS系统?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  ,sp开头的版面叫什么?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  专业公司网站制作公司,用什么语言做企业网站比较好?  如何通过西部建站助手安装IIS服务器?  制作宣传网站的软件,小红书可以宣传网站吗?  制作门户网站的参考文献在哪,小说网站怎么建立?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何在阿里云完成域名注册与建站?  宁波自助建站系统如何快速打造专业企业网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何快速上传自定义模板至建站之星?  全景视频制作网站有哪些,全景图怎么做成网页?  C++中引用和指针有什么区别?(代码说明)  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Android自定义控件实现温度旋转按钮效果  javascript中的try catch异常捕获机制用法分析  建站之星图片链接生成指南:自助建站与智能设计教程  广东企业建站网站优化与SEO营销核心策略指南  开源网站制作软件,开源网站什么意思?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  成都网站制作报价公司,成都工业用气开户费用?  常州企业网站制作公司,全国继续教育网怎么登录?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  名字制作网站免费,所有小说网站的名字?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  网站制作公司排行榜,四大门户网站排名?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何快速查询网站的真实建站时间?  如何通过FTP服务器快速搭建网站?  如何在Tomcat中配置并部署网站项目?  如何撰写建站申请书?关键要点有哪些?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在万网ECS上快速搭建专属网站?  IOS倒计时设置UIButton标题title的抖动问题  如何通过免费商城建站系统源码自定义网站主题与功能? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。