前端怎么用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. 2lession-文件访问

    今天继续学习python,因为是根据网上的教程,里面用到了一些例子,包含有后面的知识点.但是,因为自己稍微有点c.java等语言基础,所以并没有严格按照教程来学习,反而是遇到知识点就记录下来. 代码如 ...

  2. 14.inline与namespace使用

    #include <iostream> using namespace std; namespace all { //inline作用为默认调用 inline namespace V201 ...

  3. 无法显式调用运算符或访问器 错误处理方法 DLL study

    无法显式调用运算符或访问器 错误处理方法 转 无法显式调用运算符或访问器 错误处理方法 反汇编一个dll类库,导出的项目会报出很多bug,其中主要的就是“无法显式调用运算符或访问器”这个错误,看了一下 ...

  4. FMS2015:NVMe SSD的高可靠性及数据保护

    FMS2015是一个充满技术干货的平台,各领域技术大拿在峰会上分享的技术和产品都影响甚至主导着闪存下一阶段的发展. 此次Memblaze的project师团队也是从存储系统.PCIe SSD以及闪存控 ...

  5. 全面解析Activity的生命周期

    欢迎Follow我的GitHub, 关注我的CSDN. 在Android应用中, Activity是最重要的组件, 其生命周期(Lifecycle)被大家所熟知. 可是, 大家须要注意一些细节, 才干 ...

  6. UVA 11039 - Building designing 水题哇~

    水题一题,按绝对值排序后扫描一片数组(判断是否异号,我是直接相乘注意中间值越界)即可. 感觉是让我练习sort自定义比较函数的. #include<cstdio> #include< ...

  7. jQuery异步提交form表单

    使用jquery.form.js官网现在地址表单插件来实现异步form表单提交. 先看看官方的介绍: /* Usage Note: ----------- Do not use both ajaxSu ...

  8. Android 自己定义ViewGroup 实战篇 -&gt; 实现FlowLayout

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38352503 .本文出自[张鸿洋的博客] 1.概述 上一篇已经基本给大家介绍了怎 ...

  9. 格式化上下文formatting contexts

    原文 简书原文:https://www.jianshu.com/p/20c32c367b63 什么是格式化上下文(formatting contexts) Formatting context是W3C ...

  10. [慕课笔记]Node入口文件分析和目录初始化

    1:我们要在根目录下安装这些模块 2:然后来编写这些入口文件,这几行代码的大概意思是说,我引入一个express的模块,然后生成一个webview 的实例,将这个实例的监听端口设置成3000,然后就可 ...