【二】Ajax与异步编程之数据传输格式json和XML

发布时间 2023-07-16 15:47:24作者: Chimengmeng

【二】Ajax与异步编程之数据传输格式json/XML

json

  • json是 JavaScript Object Notation(javascript对象表示法)的首字母缩写,这里说的json指的是类似于javascript对象的一种数据格式。
  • json的作用:
    • 在不同的系统平台,或不同编程语言之间传递数据
  • 与json类似的还有xml,yaml,ini,text,protobuf。

语法

  • json数据对象类似于JavaScript中的对象
    • 但是它的键对应的值里面是没有函数方法的
    • 值可以是普通变量或null,不支持undefined
    • 值还可以是数组或者json对象。
  • json数据如果要保存目录文件下,则json文件的后缀为".json"。
// json数据的对象格式:
{
    "name":"tom",
    "age":18
}

// json数据的数组格式(这个格式只能用于网络传输,不会保存到json文件的):
["tom",18,"programmer"]
  • 复杂的json格式数据可以包含json对象和数组的写法。
{
  "name":"小明",
  "age": 40,
  "fav":["code","eat","swim","read"],
  "son":{
    "name":"小小明",
    "age":10
  }
}

// 数组结构也可以作为json传输数据。
  • json数据可以保存在.json文件中,一般里面就只有一个json对象。

总结:

1. json文件的后缀是json
2. json文件一般保存一个单一的json数据对象
3. json数据的属性不能是方法或者undefined,属性值只能:数值(整数、浮点数、布尔值)、字符串、对象和数组
4. json数据只使用双引号、每一个属性成员之间使用逗号隔开,并且最后一个成员没有逗号。
   {
      "name":"小明",
      "age":40,
      "fav":["code","eat","swim","read"],
      "son":{
        "name":"小小明",
        "age":10
      }
    }

js中提供的json数据转换方法

  • javascript提供了一个JSON对象来操作json数据的数据转换.
方法 参数 返回值 描述
stringify json对象 字符串 json对象转成字符串
parse 字符串 json对象 字符串格式的json数据转成json对象
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
    // js原生对象
    var js_obj = {
      name:"小明",
      age:40,
      fav:["code","eat","swim",'read',],
      son:{
        name:'小小明',
        age:10,
      }
    };
    // json对象转换成字符串格式的json数据
    var json_str = JSON.stringify(js_obj);
    console.log( "json_str=", json_str );

    // 字符串格式的json数据转换成json对象
    data_str = `{"name":"小明","age":40,"fav":["code","eat","swim","read"],"son":{"name":"小小明","age":10}}`
    var json_obj = JSON.parse(data_str);
    console.log( json_obj );
    console.log( json_obj.name );
    </script>
</head>
<body>

</body>
</html>

代码执行结果:

XML

  • eXtend Markup Language 可扩展标记语言

  • 事实上,在不同语言和不同平台之间传输数据的时候,xml最早也是一种比较常见的传输数据格式。

// 文件名格式:   文件名.xml
<?xml version="1.0" encoding="UTF-8" ?>
<data>
    <name>小明</name>
    <age>33</age>
    <fav>code</fav>
    <fav>eat</fav>
    <fav>swim</fav>
    <fav>read</fav>
    <son>
        <name>小小明</name>
        <age>10</age>
    </son>
</data>
  • 实际上开发中,json的使用频率远远高于xml。因为json表达更加简洁。
{
   "name": "小明",
    "age": 33,
    "fav": ["code", "eat", "swim", "read"],
    "son": {"name": "小小明", "age": 10}
}
  • 扩展:python3提供了 lxml 模块可以帮我们获取xml文档中的数据