• json 总结


    1、什么是JSON

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON是用字符串来表示Javascript对象;

    记住一句话:json字符串就是js对象的一种表现形式(字符串的形式)

    既然我们已经学过python的json模块,我们就用它来测试下json字符串和json对象到底是什么

     1 import json
     2 i=10
     3 s='hello'
     4 t=(1,4,6)
     5 l=[3,5,7]
     6 d={'name':"yuan"}
     7 
     8 json_str1=json.dumps(i)
     9 json_str2=json.dumps(s)
    10 json_str3=json.dumps(t)
    11 json_str4=json.dumps(l)
    12 json_str5=json.dumps(d)
    13 
    14 print(json_str1)   #'10'
    15 print(json_str2)   #'"hello"'
    16 print(json_str3)   #'[1, 4, 6]'
    17 print(json_str4)   #'[3, 5, 7]'
    18 print(json_str5)   #'{"name": "yuan"}'
    View Code

    这里面的json_str就是json字符串;

    那么json字符串里都可以放哪些值呢?

    JSON字符串内的值:

    • 数字    (整数或浮点数)
    • 字符串 (在双引号中)
    • 逻辑值 (true 或 false
    • 数组    (在方括号中)
    • 对象    (在花括号中,引号用双引)
    • null     

            看着是不是有点眼熟啊,对了,这就是咱们js的数据对象;不管是python还是其它语言,它们都有自己的数据类型,但如果要处理成json字符串那么,就要把数据换转成js对应的数据对象(比如python的元组就被处理成了数组,字典就被处理成object),再加上引号就是咱们的json字符串了;
           前端接受到json字符串,就可以通过JSON.parse()等方法解析成json对象(即js对象)直接使用了。

           之所以称json对象为js的子集,是因为像undefined,NaN,{'name':'yuan'}等都不在json对象的范畴。

    2、python 与 json 对象的对应

    1 python         -->        json
    2         dict                      object
    3         list,tuple                array
    4         str,unicode               string
    5         int,long,float            number
    6         True                      true
    7         False                     false
    8         None                      null

    让我们看一个带方法的json对象:

     1 var person = {"name":"alex",
     2               "sex":"men",
     3               "teacher":{
     4                  "name":"tiechui",
     5                   "sex":"half_men",
     6               },
     7               "bobby":['basketball','running'],
     8 
     9                "getName":function() {return 80;}
    10               };
    11 alert(person.name);
    12 alert(person.getName());
    13 alert(person.teacher.name);
    14 alert(person.bobby[0]);
    View Code

    person是一个json对象,因为它满足json规范:在json六大范畴且引号双引!

    3、.parse()和.stringify()

     1 parse() 用于从一个json字符串中解析出json对象,如
     2 
     3 var str = '{"name":"yuan","age":"23"}'
     4 
     5 结果:JSON.parse(str)     ------>  Object  {age: "23",name: "yuan"}
     6 
     7 
     8 stringify()用于从一个json对象解析成json字符串,如
     9 
    10 var c= {a:1,b:2} 
    11 
    12 结果:  JSON.stringify(c)     ------>      '{"a":1,"b":2}'
    13 
    14 注意1:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。
    15 注意2:
    16 
    17 a={name:"yuan"};   //ok
    18 b={'name':'yuan'}; //ok
    19 c={"name":"yuan"}; //ok
    20 
    21 alert(a.name);  //ok
    22 alert(a[name]); //undefined
    23 alert(a['name']) //ok
    View Code

    4、django向js发送数据

    1 def login(request):
    2     obj={'name':"alex111"}
    3     return render(request,'index.html',{"objs":json.dumps(obj)})
    4 #----------------------------------
    5  <script>
    6      var temp={{ objs|safe }}
    7      alert(temp.name);
    8      alert(temp['name'])
    9  </script>
    View Code

    此外,还可以通过ajax技术使js接受django相应的json数据。

    5、JSONXML比较 

    • 可读性:   XML胜出;
    • 解码难度:JSON本身就是JS对象(主场作战),所以简单很多;
    • 流行度:   XML已经流行好多年,但在AJAX领域,JSON更受欢迎。

    注解:其实本没什么json对象,只是我们自己这么称呼罢了,所谓的json数据就是指json字符串,在前端解析出来的对象就是js对象的一部分!

  • 相关阅读:
    Tensorflow源码解析2 -- 前后端连接的桥梁
    Tensorflow源码解析1 -- 内核架构和源码结构
    Python保存json文件并格式化
    如何在没有https环境下使用webrtc
    github提交代码不用输入账号密码的解决方案
    使用nodeJs在本地搭建最简单的服务
    ubuntu16.04 安装 nginx 服务器
    git pull和git pull --rebase的使用
    Linux 下各个目录的作用及内容
    阿里云服务器(Ubuntu16.04 64位)远程连接
  • 原文地址:https://www.cnblogs.com/horror/p/9460202.html
Copyright © 2020-2023  润新知