当前位置: 首页 > news >正文

JSON字符串转对象

  

JSON(JavaScript Object Notation) JavaScript对象标记法;JSON是与JavaScript高度契合的;
JSON 语法:
    --数组(Array)用"[ ]"表示;
    --对象(Object)用"{ }"表示;
    --名称/值对(name/value)组合成数组和对象;
    --并列的数据用“,”隔开;

{
  “name”:"kobe",
  "age":38
}

 

JSON与XML
  JSON相对于XML来说的优势:
      -- 没有结束标签,长度更短,读写更快
      -- 能够直接被JavaScript解释器解析
      -- 可以直接使用数组

  JSON:

    {
	  “name”:"kobe",
	  "age":38,
	  “friends”:["james","wade","bosh"]
	}

  XML:

  <root>
	<name>kobe</name>	
	<age>38</age>
	<friends>james</ftiends>
	<friends>wade</ftiends>
	<friends>bosh</ftiends>
  </root>

  JSON的解析和生成:

    -- eval()函数:   接收参数后将参数直接当成JavaScript的代码执行;

  <script>
	var str = "console.log('执行了eval函数')"
	eval(str);   //控制台上将打印出“执行了eval函数”
  </script>

  eval()函数也可以解析json字符串,但是该函数是比较危险的,因为它是将字符串直接运行的。所以一般用该函数解析json字符串的话不是很合理;

  <script>
	var str = ‘{“name”:"kobe","age":38}’
	var obj = eval( “(” + str + ")");   // 因为str参数是用大括号括起来的,直接运行的话JavaScript会当成一个代码块运行
	console.log(obj)
  </script> 

  --JSON.parse()函数解析json字符串,该函数用来解析json字符串是比较合理的,也多数浏览器也兼容;现在推荐使用此函数来解析JSON。

  <script>
	var str = ‘{“name”:"kobe","age":38}’
	var obj = JSON.parse(  str );  
	console.log(obj)
  </script>  

JSON.parse() 可以有两个参数,第一个是JSON字符串,第二个是个函数。那么该函数有两个参数:name 和 value,分别代表名称和值。当传入一个JSON字符串后,JSON的每一组名称/值对都要调用此函数。注意,该函数一定要有返回值,返回值 将赋值给 当前的名称(name)。一般运用在解析JSON字符串的同时用该函数对数据进行一些处理。

  <script>
  	var str = ‘{“name”:"kobe","age":38}’
	var obj = JSON.parse( str , fun );
	function fun (name,value){
	  if( name == "age" )
	    value = 40;   
	  return value;       //一定要有返回值
	}     //此方法表示在解析JSON时当解析到“age”:38这个名称/值对的时候将该值修改成40;
	console.log(obj)    //控制台打印出:object {name:"kobe",age:40}
	</script>

  

 

转载于:https://www.cnblogs.com/tongxuping/p/6026309.html

相关文章:

  • iOS开发笔记--导航栏解决方案(透明、隐藏)
  • 投票系统之防止重复投票
  • python redis使用心得
  • Tools - Markdown
  • 深入理解ajax系列第一篇——XHR对象
  • 如果图片链接找不到地址出错自动显示默认图片(头像)
  • 现代化敏捷简介
  • HTML link标签media参数
  • mongodb中数据类型的坑
  • Velocity初探小结--Velocity在spring中的配置和使用
  • 图像金字塔
  • 如何学习linux的建议
  • Scrapy ImagePipeline(图片下载组件)
  • Spring boot ---- java.lang.NoClassDefFoundError: javax/servlet/ServletContext
  • Java读取表格数据
  • [译]Python中的类属性与实例属性的区别
  • 【comparator, comparable】小总结
  • 0基础学习移动端适配
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • emacs初体验
  • EOS是什么
  • MySQL QA
  • 分享一份非常强势的Android面试题
  • 搞机器学习要哪些技能
  • 构建工具 - 收藏集 - 掘金
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端工程化(Gulp、Webpack)-webpack
  • 实现菜单下拉伸展折叠效果demo
  • 双管齐下,VMware的容器新战略
  • Prometheus VS InfluxDB
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (SpringBoot)第二章:Spring创建和使用
  • (第61天)多租户架构(CDB/PDB)
  • (算法)前K大的和
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)UDP基本编程步骤
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)c++ std::pair 与 std::make
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Windows2003安全设置/维护
  • *上位机的定义
  • .form文件_一篇文章学会文件上传
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @Transactional类内部访问失效原因详解
  • @Validated和@Valid校验参数区别
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [Assignment] C++1
  • [AX]AX2012 SSRS报表Drill through action