前端怎么用js模拟应用 JSON-通俗易懂,这是转载额



好多孩子 弄不明确复杂的json 格式的应用,以下从基础来看一看JSON。怎么玩,
事实上结构理解清了,写起来比html还爽吧。


0.前言
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同一时候也易于机器解析和生成。
它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON採用全然独立于语言的文本格式,可是也使用了类似于C语言家族的习惯(包含C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

    JSON大致3种结构,JSON对象、JSON数组和JSON对象和数组嵌套。
1 JSON对象
    JSON对象简单而言便是键值对或名值对。而“值”能够是数值、字符串和布尔类型等。
    JSON对象详细格式如图1所看到的。

图1 JSON对象格式

1.1 JSON数值
    请注意数值不须要加引號,键值对之间使用","。
    【单个数值】
{“value”:12}
    【多个数值】
{"maxValue":24, "minValue":12};

[javascript] view
plain
 copy

  1. <script>
  2. var jsonObj = {"maxValue":24, "minValue":12};
  3. console.log(jsonObj.maxValue);
  4. console.log(jsonObj.minValue);
  5. </script>
    【输出】
24
12

1.2 JSON字符串
    字符串须要加引號,键值对之间使用","。    
    【单个字符串】
{"name":"xukai871105"}
    【多个字符串】

{"name":"xukai871105", "blog":"http://blog.csdn.net/xukai871105"}


[javascript] view
plain
 copy

  1. <script>
  2. var jsonObj = {"name":"xukai871105", "blog":"http://blog.csdn.net/xukai871105"};
  3. console.log(jsonObj.name);
  4. console.log(jsonObj.blog);
  5. </script>

【输出】

[plain] view
plain
 copy

  1. xukai871105
  2. http://blog.csdn.net/xukai871105

1.3 JSON布尔
    请注意JSON格式中的值能够使用布尔类型,且不须要加引號。假设true或false被引號包裹。那么便解析为JSON字符串。请处理稍有不同。
    
{"success":false}

[javascript] view
plain
 copy

  1. <script>
  2. var jsonObj = {"success":false};
  3. console.log(jsonObj.success);
  4. </script>
    【输出】
false

2 JSON数组
    JSON数组的表达方法和C语言数组的表达方法全然同样。以下的样例中存在一个JSON对象,该JSON对象仅仅有一个键值对,键为lists而键值为JSON数组——[5,6,7,8]。这里已经存在JSON类型的嵌套,详细请看以下一个样例。

{"lists":[5,6,7,8]}

图2 JSON数组格式
[javascript] view
plain
 copy

  1. <script>
  2. var jsonObj = {"lists":[5,6,7,8]};
  3. console.log(jsonObj.lists);
  4. for(var i=0; i<jsonObj.lists.length; i++) {
  5. console.log(jsonObj.lists[i]);
  6. }
  7. </script>
    【输出】
[plain] view
plain
 copy

  1. [5, 6, 7, 8]
  2. 5
  3. 6
  4. 7
  5. 8

3 JSON嵌套
    JSON格式能够嵌套,所谓嵌套便是JSON对象中可包含JSON数组,JSON数组中可包含JSON对象。

以下的样例中rows为JSON对象,对象中嵌套JSON数组,每个JSON数组的元素又是一个JSON对象。这样的嵌套情况在实际情况中常常出现。

[javascript] view
plain
 copy

  1. <script>
  2. var jsonObj =
  3. {
  4. "total": 3,
  5. "rows": [
  6. {
  7. "title": "树莓派学习笔记——索引博文",
  8. "url": "http://blog.csdn.net/xukai871105/article/details/23115627"
  9. },
  10. {
  11. "title": "树莓派学习笔记——GPIO功能学习",
  12. "url": "http://blog.csdn.net/xukai871105/article/details/12684617"
  13. },
  14. {
  15. "title": "物联网学习笔记——索引博文",
  16. "url": "http://blog.csdn.net/xukai871105/article/details/23366187"
  17. }
  18. ]
  19. };
  20. console.log(jsonObj.total);
  21. for(var i=0; i<jsonObj.rows.length; i++) {
  22. console.log(jsonObj.rows[i].title);
  23. console.log(jsonObj.rows[i].url);
  24. }
  25. </script>
    【输出】
[plain] view
plain
 copy

  1. 3
  2. 树莓派学习笔记——索引博文
  3. http://blog.csdn.net/xukai871105/article/details/23115627
  4. 树莓派学习笔记——GPIO功能学习
  5. http://blog.csdn.net/xukai871105/article/details/12684617
  6. 物联网学习笔记——索引博文
  7. http://blog.csdn.net/xukai871105/article/details/23366187

4.javascript中eval函数
    【为什么要加括号 】
    加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象。而不是作为语句(statement)来运行。比如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的開始和结束标记。那么{}将会被觉得是运行了一句空语句。

參考——【3】javascript
eval和JSON之间的联系

[javascript] view
plain
 copy

  1. <script>
  2. var jsonStr = '{"total":3}';
  3. var jsonObj= eval('(' + jsonStr + ')');
  4. console.log(jsonObj.total);
  5. </script>
  【输出】
3

5.常见错误
【1】多一个逗号
}或]前多一个, 这样的情况不符合JSON,可是某些浏览器能够容忍,比如chrome和火狐。可是某些浏览器就无法容忍,比如IE。不妨选择JSON校验工具測试一下JSON数据包是否合法。请注意以下一个样例中url最后的","。该逗号是多余的。
[plain] view
plain
 copy

  1. {
  2. "title": "树莓派学习笔记——索引博文",
  3. "url": "http://blog.csdn.net/xukai871105/article/details/23115627",
  4. }

6.參考资料

 欢迎增加~!

前端怎么用js模拟应用 JSON-通俗易懂的更多相关文章

  1. 前端学习之——js解析json数组

    ** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...

  2. node.js模拟qq漂流瓶

    (文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) node.js模拟简易漂流瓶,页面有扔瓶子和捡瓶子的功能,一个瓶子只能被捡到一次,阅读完就置状态位, ...

  3. Vue+Mock.js模拟登录和表格的增删改查

    有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...

  4. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

  5. JS对象与json字符串格式

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  6. 通过JS模拟select表单,达到美化效果[demo][转]

    转自: http://www.cnblogs.com/dreamback/p/SelectorJS.html 通过JS模拟select表单,达到美化效果 Demo ------------------ ...

  7. 通过JS模拟select表单,达到美化效果[demo]

    .m-form{background:#fff;padding:50px;font-family:12px/1.5 arial,\5b8b\4f53,sans-serif;} .m-form ul,. ...

  8. js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq

    js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...

  9. 2019前端面试系列——JS面试题

    判断 js 类型的方式 1. typeof 可以判断出'string','number','boolean','undefined','symbol' 但判断 typeof(null) 时值为 'ob ...

随机推荐

  1. Java调用jama实现矩阵运算

    Java调用jama实现矩阵运算 一.jama简介 Jama是一个基本的线性代数java包.包括一个基本的Matrix类和5个矩阵分解类. Matrix类提供了基本的线性代数数值运算的功能,不同的构造 ...

  2. 一起talk C栗子吧(第九十 三回:C语言实例--进程间通信之临界资源)

    各位看官们.大家好,前面章回中咱们说的是使用信号和管道进行进程间通信的样例.这一回咱们说的样例是:进程间通信之临界资源.闲话休提,言归正转.让我们一起talk C栗子吧! 我们首先介绍一下,什么是临界 ...

  3. 含有打印、统计DataGridView(2)

    /// <summary>        /// 导出数据到Excel                /// </summary>        public void loa ...

  4. UML学习之初步总结

    UML(Unified Modeling Language)即统一建模语言,是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了一系列最 ...

  5. 如何不使用js实现鼠标hover弹出菜单效果

    最近看到很多同学在实现鼠标hover弹出菜单的效果时都是用的js代码去实现的,默认给弹出隐藏掉,通过js事件绑定动态的显/隐弹出菜单元素. <ul> <li>主页</li ...

  6. 注意knn与kmeans的区别

    开始的时候,我居然弄混了. knn是分类方法,是通过新加入的节点最接近的N个节点的属性,来判定新的节点. kmeans是聚类方法,是先选择k个点作为k个簇的中点,然后分簇之后重新划定中心点,然后再分簇 ...

  7. C++的模板template

    模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 因此,使用模板的目 ...

  8. 扩展的方法:es6 安装模块builder

    https://github.com/es-shims/es5-shim/ Image.png 检测浏览器可支持es5,不支持就扩展,做兼容: 扩展的方法: Image.png 取所有对象的键值: o ...

  9. GCC 编译 --sysroot

    -sysroot 的作用 如果在编译时指定了-sysroot就是为编译时指定了逻辑目录.编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录. 如 ...

  10. Android javaMail使用imap协议接收邮件

    在这里说明一下,pop3和imap协议都是接收邮件的,但是他们还是有很多不同的. IMAP和POP有什么区别? POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件. ...