前端怎么用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. JavaScript学习总结(2)——JavaScript数据类型判断

    最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧! 一.JS中的数据类型  1.数值型(Number):包括整数. ...

  2. WEB安全实战(二)带你认识 XSS 攻击

    前言 上一篇文章写了关于 WEB 安全方面的实战,主要是解决 SQL 盲注的安全漏洞.这篇文章本来是要写一篇关于怎样防治 XSS 攻击的,可是想来想去,还是决定先从理论上认识一下 XSS 吧.下一篇文 ...

  3. python-string中部分string替换

    今天遇到一个问题,就是需要把 “/home/zhangshuli/32_kk/” 中的32_kk 替换成为 52_kk 然后就在网上找方法,刚开始尝试的方法是 aaa = "/home/zh ...

  4. windows.location属性(常用知识点)

    location对象 含有当前URL的信息. 属性 href 整个URL字符串.protocol 含有URL第一部分的字符串,如http:host 包含有URL中主机名:端口号部分的字符串.如//ww ...

  5. Mongodb总结1-启动和Shell脚本

    2013年,还在秒针,当时听说了Mongodb,就学习了下,搞了下HelloWorld.主要是熟悉Mongodb的启动.命令行的Shell脚本.Java访问的CRUD. 今天,由于需要,再次回顾和进一 ...

  6. C#集合类:动态数组、队列、栈、哈希表、字典

    1.动态数组:ArrayList 主要方法:Add.AddRange.RemoveAt.Remove 2.队列:Queue 主要方法:Enqueue入队列.Dequeue出队列.Peek返回Queue ...

  7. 截止频率-3db

    关于-3db截止频率 (2013-06-22 10:47:02) 转载▼   分类: 信号.电路 关于-3db截止频率 为什么当信号衰减了-3db的时候就算是截止频率了.这里面有什么高深的内涵.毕竟这 ...

  8. FZU Problem 2168 防守阵地 I

    http://acm.fzu.edu.cn/problem.php?pid=2168 题目大意: 给定n个数和m,要求从n个数中选择连续的m个,使得a[i]*1+a[i+1]*2+--a[i+m]*m ...

  9. 20160206.CCPP体系具体解释(0016天)

    代码片段(01):.指针.c+02.间接赋值.c 内容概要:内存 ///01.指针 #include <stdio.h> #include <stdlib.h> //01.取地 ...

  10. 【LCS】POJ1458Common Subsequence

    题目链接:http://poj.org/problem?id=1458 这是一道最长公共子序列的模板题: #include<iostream> #include<string> ...