详解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 相关文章推荐
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 Javascript
javascript常用的设计模式
Feb 09 Javascript
canvas时钟效果
Feb 16 Javascript
原生js封装自定义滚动条
Mar 24 Javascript
Vue.js tab实现选项卡切换
May 16 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
Aug 11 Javascript
在node环境下parse Smarty模板的使用示例代码
Nov 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Javascript &amp; DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
Python Deque 模块使用详解
2014/07/04 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python实现决策树分类算法
2017/12/21 Python
wxPython之解决闪烁的问题
2018/01/15 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
python 导入数据及作图的实现
2019/12/03 Python
vscode调试django项目的方法
2020/08/06 Python
详解python datetime模块
2020/08/17 Python
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
什么是servlet链?
2014/07/13 面试题
2015年学校总务工作总结
2015/07/20 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
电工实训心得体会
2016/01/14 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL