前端怎么用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. ViewPager (下)-- 利用 Fragment 实现美丽的 页面切换

    之前用的ViewPager适用于简单的广告切换,但实现页面间的切换最好是用官方推荐的Fragment来处理. 本人力争做到最简单.最有用,是想以后用到的时候能够方便的拿过来复制就能够了. 效果图: w ...

  2. Log4j中为什么设计isDebugEnabled()方法

    转自:https://www.jianshu.com/p/e1eb7ebfb21e 先看下面的代码,在真正执行logger.debug()之前,进行了logger.isDebugEnabled()的判 ...

  3. [置顶] WebService学习总结(3)——使用java JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  4. Linux 从core信息中找到TLS信息

    背景 我们在查core问题时,有时候须要查看某个TLS变量的值.可是GDB没有提供直接的命令,或者我不知道.这篇文字的目的.就是想办法从core文件里找出某个线程存放TLS变量的内容. 依据 Linu ...

  5. css滑动鼠标到img后,切换图片

    写了个样例: <a href="#"><img src="http://csdnimg.cn/pubfooter/images/gongshang_lo ...

  6. Android Material风格的应用(二)--RecyclerView

    添加RecyclerView Android Material风格的应用(一)--AppBar TabLayoutAndroid Material风格的应用(二)--RecyclerViewAndro ...

  7. HTTP网络协议(五)

    主动攻击:是指攻击通过直接访问Web应用,把攻击代码传入的攻击模式,该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源,例如:SQL注入攻击和OS命令注入攻击.  被动攻击:是指 ...

  8. 【Educational Codeforces Round 31 C】Bertown Subway

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 最后肯定会形成若干个环的. 把最大的两个环合在一起就好. 每个环贡献: 假设x=环的大小 ->x*x 注意int的溢出 [代码 ...

  9. GitHub 上排名前 100 的 IOS 开源库简介

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. 项目名称 项目信息 1. AFNetworking 作 ...

  10. ASI使用

    一.ASI类库集成: .添加源代码文件 ASIAuthenticationDialog.h ASIAuthenticationDialog.m ASICacheDelegate.h ASIDataCo ...