JSON基础与数据解析

引入json主要是为了数据交互,它是轻量级的数据交互
所有编程语言都离不开的三大数据类型
scalar 标量 ->字符串和数字
sequence 序列->数组和列表 list array
mapping 映射->键值对
json采用的映射关系形成的一种轻量级的数据形式

json的数据格式

  1. 并列的数据用逗号隔开
  2. "name":"张三",
  3. "age": 18
  4. json里的键名要用双引号

模版替换

  1. <script type='text/html' id='J_tpl'>
  2. <li class="list-item">
  3. <div class='mask'>
  4. <h3>{{career}}工程师(上海)</h3>
  5. <p>月薪{{salary}}</p>
  6. </div>
  7. <img src="../img/{{img}}" alt="">
  8. </li>
  9. </script>
  10. 数据缓存
  11. <div id='J_data' style='display: none;'>
  12. [{"career":"java","salary":"20","img":"1.jpeg"},{"career":"web","salary":"28","img":"2.jpeg"},
  13. {"career":"java","salary":"20","img":"3.jpeg"},{"career":"java","salary":"20","img":"4.jpeg"},{"career":"web","salary":"28","img":"5.jpeg"}]
  14. </div>
  15. function setTplToHtml(tpl,regExp,opt){
  16. return tpl.replace(regExp(),function(node,key){
  17. return opt[key]
  18. })
  19. }
  20. function regTpl(){
  21. return new RegExp(/{{(.*?)}}/,'gim')
  22. }
  23. function render() {
  24. var jsonData=document.getElementById('J_data').innerHTML,
  25. tpl=document.getElementById('J_tpl').innerHTML,
  26. data=JSON.parse(jsonData),
  27. len=data.length,
  28. oList=document.getElementsByClassName('js-list')[0],
  29. list='',
  30. item;
  31. for(var i=0;i<len;i++){
  32. item=data[i]
  33. list+=setTplToHtml(tpl,regTpl,{
  34. career: item.career,
  35. city: item.city,
  36. salary: item.salary,
  37. img: item.img
  38. })
  39. }
  40. oList.innerHTML=list;
  41. }