一、JSON是什么?

  JSON(JavaScript Object Notation)、轻量级数据交换格式。

  JSON的后缀名:.json  JSON的MINE类型:application/json

二、JSON的格式

  以下为实际JSON举例(包含基本类型与数组类型等),理论不再赘述。

  1. {
  2. "name":"张三",
  3. "id":1001,
  4. "address":
  5. [
  6. {"pro":"anhui","city":"fuyang"},
  7. {"pro":"jiangsu","city":"nanjing"}
  8. ],
  9. "bool":true
  10. }

  关于jsonPath,参考:https://www.cnblogs.com/weilunhui/p/3857366.html

三、如何遍历JSON

  简单JSON对象的遍历: 

            1.obj.attr

      2.obj["attr"]

      3.使用 attr in json 进行遍历:

  1. // 遍历简单json对象
  2. function traverseJsonSimpleObj(){
  3. var jsonObj = {"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"};
  4. for(var key in jsonObj){
  5. var html = "<p>"
  6. html += (key + ' : ' + jsonObj[key]);
  7. html += "</p>";
  8. $("#out").append(html);
  9. }
  10. }

  遍历json数组

  1. function traverseJsonArray(){
  2. var jsonArray = [{"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"},
  3. {"name": "kevin2", "age": 28, "sex": "男", "city": "beijing"}];
  4. //alert('JSON.stringify(jsonArray) = ' + JSON.stringify(jsonArray));
  5. for(var i=0; i<jsonArray.length; i++){
  6. var jsonObj = jsonArray[i];
  7. for(var key in jsonObj){
  8. var html = "<p>"
  9. html += (key + ' : ' + jsonObj[key]);
  10. html += "</p>";
  11. $("#out").append(html);
  12. }
  13. $("#out").append("-----------------------------------------------------");
  14. }
  15. }

    当然,可以简写为:

  1. var json = [{dd:'SB',AA:'东东',re1:123},{cccc:'dd',lk:'1qw'}];
  2. for(var i=0,l=json.length;i<l;i++){
  3. for(var key in json[i]){
  4. alert(key+':'+json[i][key]);
  5. }
  6. }

    后台直接通过springMVC等框架结合jackson,将JSON字符串放入javaBean中(属性与名称对应)(见springMVC章节)

  【更新】:实际springMVC后台@ResponseBody时返回JSON时前台的解析方法:

    后台返回数据形式:

  示例1:

  1. @RequestMapping(value = "findAll",method = RequestMethod.GET)
  2. @ResponseBody
  3. public List<SimpleMenuList> findAll(HttpServletResponse response){
  4. List<SimpleMenuList> mlList = menuListService.findAll();
  5. /*ObjectMapper mapper = new ObjectMapper();
  6. String jsonfromList = mapper.writeValueAsString(mlList);
  7. System.out.println(jsonfromList);*/
  8. //Map<String,Object> map = new HashMap<String,Object>();
  9. // map.put("list", mlList);
  10. // 许跨域访问
  11. response.setHeader("Access-Control-Allow-Origin", "*");
  12. return mlList;
  13. }

  示例2:

  实体类:(单个属性,只为举例)

  1. public class AssociateWord {
  2.  
  3. private String assoWord;
  4.  
  5. public String getAssoWord() {
  6. return assoWord;
  7. }
  8.  
  9. public void setAssoWord(String assoWord) {
  10. this.assoWord = assoWord;
  11. }
  12.  
  13. }

  返回List:

  1. for (int i =0; i<5; i++) {
  2. AssociateWord aw = new AssociateWord();
  3. String s = "关键字"+i;
  4. System.out.println(s);
  5. aw.setAssoWord(s);
  6. list.add(aw);
  7. }
  8. return list;

  其他示例可参见SSM—CRUD随笔等(如返回map)

  1. //获得全部菜单列表
  2. function getMenuList(){
  3. $.ajax({
  4. type : "get",
  5. url : "http://localhost:8080/jeesite/f/menu_list/menuList/findAll",
  6. success : function(result) {
  7. console.log(result);
  8. var jsonArray = eval(result);
  9. alert("后台返回的菜单列表:"+jsonArray);
  10. alert("数组长度:"+jsonArray.length);
  11. //此处遍历点单列表
  12. for(var i=0; i<jsonArray.length; i++){
  13. var jsonObj = jsonArray[i];
  14. for(var key in jsonObj){
  15. alert(key + ' : ' + jsonObj[key]);
  16. }
  17. }
  18. }
  19. });
  20. }

    【更新】:jQuery each遍历JSON数组:

  1. {
  2. "code": 100,
  3. "msg": "操作成功",
  4. "map": {
  5. "pageInfo": {
  6. "pageNum": 1,
  7. "pageSize": 5,
  8. "size": 5,
  9. "startRow": 1,
  10. "endRow": 5,
  11. "total": 502,
  12. "pages": 101,
  13. "list": [
  14. {
  15. "empId": 1,
  16. "empName": "Alan",
  17. "gender": "M",
  18. "email": "1001@qq.com",
  19. "dId": 1,
  20. "department": {
  21. "deptId": 1,
  22. "deptName": "宣传部"
  23. }
  24. },
  25. {
  26. "empId": 2,
  27. "empName": "Bob",
  28. "gender": "F",
  29. "email": "1002@qq.com",
  30. "dId": 2,
  31. "department": {
  32. "deptId": 2,
  33. "deptName": "测试部"
  34. }
  35. },
  36. {
  37. "empId": 3,
  38. "empName": "ed0b9",
  39. "gender": "M",
  40. "email": "ed0b9@qq.com",
  41. "dId": 1,
  42. "department": {
  43. "deptId": 1,
  44. "deptName": "宣传部"
  45. }
  46. },
  47. {
  48. "empId": 4,
  49. "empName": "167b5",
  50. "gender": "F",
  51. "email": "167b5@qq.com",
  52. "dId": 1,
  53. "department": {
  54. "deptId": 1,
  55. "deptName": "宣传部"
  56. }
  57. },
  58. {
  59. "empId": 5,
  60. "empName": "2fd6c",
  61. "gender": "M",
  62. "email": "2fd6c@qq.com",
  63. "dId": 1,
  64. "department": {
  65. "deptId": 1,
  66. "deptName": "宣传部"
  67. }
  68. }
  69. ],
  70. "prePage": 0,
  71. "nextPage": 2,
  72. "isFirstPage": true,
  73. "isLastPage": false,
  74. "hasPreviousPage": false,
  75. "hasNextPage": true,
  76. "navigatePages": 5,
  77. "navigatepageNums": [
  78. 1,
  79. 2,
  80. 3,
  81. 4,
  82. 5
  83. ],
  84. "navigateFirstPage": 1,
  85. "navigateLastPage": 5,
  86. "lastPage": 5,
  87. "firstPage": 1
  88. }
  89. }
  90. }

    对上述JSON遍历如下:(result即为JSON)

  1. //解析员工数据
  2. function build_emps_table(result){
  3. //员工数据
  4. var emps = result.map.pageInfo.list;
  5. //使用jQuery遍历数组,遍历的是取出来的json数组,可以通过开发工具查看JSON结构
  6. $.each(emps,function(idx,item){
  7. //使用jQuery生成各列
  8. var empIdTd = $("<td></td>").append(item.empId);
  9. var empNameTd = $("<td></td>").append(item.empName);
  10. //三目运算符处理性别
  11. var genderTd = $("<td></td>").append(item.gender=="M"?"男":"女");
  12. var emailTd = $("<td></td>").append(item.email);
  13. var deptName = $("<td></td>").append(item.department.deptName);
  14.  
  15. });
  16. }

JavaWeb基础——JSON的更多相关文章

  1. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  2. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  3. JavaWeb基础: 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  4. 项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

    前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实 ...

  5. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  6. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  7. 【JavaWeb】JSON基础

    JSON JavaScript Object Notation(JavaScript 对象表示法): JSON是轻量级的文本数据交换格式: JSON独立于语言,具有自我描述性,更易理解: JSON语法 ...

  8. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  9. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

随机推荐

  1. linux安装memcached

    一:为什么要使用memcached 瓶颈:互联网发展,特别在web2.0兴起之后,传统数据库开始出现瓶颈 1:对数据库的高并发读写 2:对海量数据库的处理(海量数据查找)memcache 是高性能的分 ...

  2. 附加到SQL2012的数据库就不能再附加到低于SQL2012的数据库版本

    附加到SQL2012的数据库就不能再附加到低于SQL2012的数据库版本 昨天我只是将数据库附加到SQL2012,然后各个数据库都做了收缩事务日志的操作 兼容级别这些都没有改 再附加回SQL2005的 ...

  3. Oracle EBS 日记账

    select b.status, h.je_source, (select USER_JE_CATEGORY_NAME from GL_JE_CATEGORIES where JE_CATEGORY_ ...

  4. Git修改子模块的路径

    Git在两个地方存储有关子模块的信息.第一个是在一个名为的文件中.gitmodules,该文件被签入git存储库.对此文件的更改将传播到其他存储库. 另一个位置在.git/config,并且它是执行大 ...

  5. web开发方面会遇到哪些缓存?分别如何优化

    Web缓存定义: Web缓存游走于服务器和客户端之间,这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个. Web缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内 ...

  6. 最大公约数(GCD)与最小公倍数(LCM)的计算

    给出两个数a.b,求最大公约数(GCD)与最小公倍数(LCM) 一.最大公约数(GCD)    最大公约数的递归:  * 1.若a可以整除b,则最大公约数是b  * 2.如果1不成立,最大公约数便是b ...

  7. mysql 批量插入500W 测试

    set_time_limit(800);$dsn = 'mysql:host=localhost;dbname=test';$db = new PDO($dsn,'root','',array(PDO ...

  8. RMAN恢复脚本案例

    $ crontab -l0 12,19 * * * $ORACLE_HOME/scripts/arcbkup.sh59 03 * * *  $ORACLE_HOME/scripts/dbbkup.sh ...

  9. windows下python 正确安装词云包wordcloud的方法

    安装wordcloud的时候果然还是出现了问题,试了网上说的好多办法,最后找到了一种成功率高的,可以优先尝试一下 下载.whl文件http://www.lfd.uci.edu/~gohlke/pyth ...

  10. html操作

    HTML(hyper text markup language): 超文本标记语言,标准通用标记语言下的一个应用. 超文本就是指页面内可以包含图片.连接.音乐.程序等非文字元素. 超文本标记语言的结构 ...