详解js中Json的语法与格式


Posted in Javascript onNovember 22, 2016

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。

由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

JSON语法规则:

数据在 名称/值 对仲
数据由逗号分隔
花括号保存对象
方括号保存数组

JSON 名称/值 对介绍

"name":"张飞",
"age":23

Json的值可以是:

数字(整数或浮点数)
字符串(要包括在双引号中)
逻辑值(true或false)
数组(在方括号中)
对象(在花括号中)

Json转javascript对象的方法为:

eval("(" + str + ")");

代码示例:

<html>
<head>
 <title>Json测试</title>
 <script src="/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
 <script type="text/javascript">
  //基本上,Json返回的要么是对象,要么是数组,如果单纯返回一个字符串,那么就没有必要用Json了,因此
  //Json基本就下面这些可,不过要注意双引号
  var str0 = "{employees:'测试'}";
  var obj0 = eval("(" + str0 + ")");
  alert(obj0.employees);   //输出测试

  var str = "{name:'张三',Age:21}";
  var obj = eval("(" + str + ")");
  document.write(obj.name + obj.Age); //输出 张三21
  alert(obj.name);

  //别看下面那段Json长,其实是一个对象,属性employees的值是一个对象数组。和上面的相比,只是name:张三 中的"张三"字符串 变成了对象数组而已
  var str2 = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
  var obj2 = eval("(" + str2 + ")");
  alert(obj2.employees[0].firstName);  //弹出 Bill

  var str3 = "[1,2,3,4,5,6]";    //json 数组
  var obj3 = eval("(" + str3 + ")");  //输出 2
  alert(obj3[1]);
 </script>
</head>
<body>
 <div id="div1">
 </div>
</body>
</html>

Json与JavaScript对象转换

  JSON转javascript对象

//Json转对象1
function JsonToObject(str) {
 return eval("(" + str + ")");
}

//Json转对象2 
function strToJson(str){
 var json = (new Function("return " + str))();
 return json;
}

//Json转对象3 jQuery工具函数
$.parseJSON()

  javascript对象转JSON

//javascript对象转Json
function ObjectToJson(o) {
 var arr = [];
 var fmt = function(s) {
  if (typeof s == 'object' && s != null) return json2str(s);
  return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
 }
 for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
 return '{' + arr.join(',') + '}';
}

以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
JavaScript实现找出数组中最长的连续数字序列
Sep 03 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
Vue.js路由vue-router使用方法详解
Mar 20 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
Mar 23 Javascript
使用D3.js制作图表详解
Aug 13 Javascript
详解react服务端渲染(同构)的方法
Sep 21 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
vue--点击当前增加class,其他删除class的方法
Sep 15 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 #Javascript
javascript入门之string对象【新手必看】
Nov 22 #Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 #Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 #Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 #Javascript
jQuery中$.grep() 过滤函数 数组过滤
Nov 22 #Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 #Javascript
You might like
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php中memcache 基本操作实例
2015/05/17 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
Vue header组件开发详解
2018/01/26 Javascript
javascript中的隐式调用
2018/02/10 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
解决vue 表格table列求和的问题
2019/11/06 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
文明寄语大全
2014/04/11 职场文书
幼儿园安全责任书
2014/04/14 职场文书
校园文化标语
2014/06/18 职场文书
辞职信的写法
2015/02/27 职场文书
2015年服务员工作总结
2015/04/08 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python