Logo

郎哥编程

JSON数据

2020-12-24 178

客户端向服务端发送HTTP请求,服务端接收请求并返回客户端请求的数据。服务端返回的数据可以是HTML网页、也可以是其它数据格式,最常用的数据格式就是JSON数据。

JSON数据的英文全称是JavaScript Object Notation,它是是一种轻量级的数据交换格式,采用文本格式来存储和表示数据,因此JSON数据独立于任何编程语言和操作系统,在数据交换中被广泛使用。

1、  JSON语法规则

JSON是一个标记符序列,标记符包括六个构造字符、字符串、数字和三个字面值。

构造字符是构造JSON数据的特定字符,六个构造字符分别是左大括号“{”、右大括号“}”、左中括号“[”、右中括号“]”、冒号“:”和逗号“,”。

在构造字符中,左大括号和右大括号要成对使用,用于封装JSON对象,左中括号和右中括号也要成对使用,用于封装JSON数组。

字符串和数字用于构成JSON对象内的数据。三个字面值为false、null和true,也用于构成JSON对象内的数据,false表示假、true表示真、null表示空。

JSON对象

JSON对象是一个无序的“名称/值”对集合。一个对象以“{”开始,“}”结束。每个“名称”后跟一个冒号“;”,多个“名称/值”对之间使用英文逗号分隔。

“名称/值”对的名称必须是字符串,值可以是字符串、数字、JSON对象、数组和三个字面值。

例如下面的JSON数据:

{
"name":"Petter",
"sex":"man",
"age":26
}

上面的JSON数据是一个JSON对象,这个JSON对象有三个“名称/值”对,数据语义为一个人的姓名(name)、性别(sex)和年龄(age)。

JSON对象也可以嵌套,即在对象内又包含子对象。例如下面的JSON数据:

{
"employee":
    { "name":"Bill Gates", "age":62, "city":"Seattle" }
}

上面的JSON数据就是一个嵌套的JSON对象,外层的JSON对象只有一个“名称/值”对,名称"employee"的值是一个JSON对象,该JSON对象有三个“名称/值”对。

JSON数组

JSON和JS的数组基本相同,它可以将多个JSON数据封装到一个结构体中,结构体使用一对中括号封闭,每个JSON数据之间用英文逗号分隔。

JSON数组的元素必须是合法的JSON数据,可以是JSON对象、字符串、数字、数组、true、false、null。

例如:

[“Petter”,”max”,29]
[{ "name":"Bill Gates", "age":62},{ "name":"Petter", "age":29}]
[“name”:[{ "Bill Gates",” Petter”}]]

2、  使用JS操作JSON数据

JSON字符串与JSON对象的转换

当客户端发送JSON数据到服务端,或者服务端返回JSON数据到客户端时,都需要对JSON数据进行处理,将JSON数据转换为JSON字符串,才能通过网络进行传输。

客户端接收服务端返回的JSON字符串后,需要将JSON字符串转换为JSON对象,JS才能读取JSON数据。同理,服务端也需要将JSON字符串转换为JSON对象,才能读取JSON数据。

JS内置了JSON对象,该对象的parse()方法可以将JSON字符串转换为JSON对象,该对象的stringify()方法可以将JSON对象转换为字符串。

案例1:JSON字符串与JSON对象的转换(案例代码见unit5\case1.html):

JSON对象自身就是JS对象,访问<html>

<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function show()
 {
  // JSON字符串
  var text ='{"name":"Liza","password":"123"}'
  // 将JSON字符串转换为JSON对象
  var jsonObject = JSON.parse(text)
  // 将JSON对象转换为字符串
  var json_str = JSON.stringify(jsonObject)
 
}
</script>
</head>
<body>
<h3>JavaScript开发案例</h3>
<input type="button" value="JSON对象与JSON字符串转换" onclick="show()"/></p>
</body>
<html>

访问JSON对象方式同JS对象相同,JSON对象的“名称/值”对可以看作是JS对象的属性和属性值,名称是JS对象的属性,值是JS对象的属性值。

案例2:访问JSON对象的属性(案例代码见unit5\case2.html):

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
  function show()
  {
    // JSON字符串
    var text ='{"name":"Liza","password":"123"}'
    // 将JSON字符串转换为JSON对象
    var jsonObject = JSON.parse(text)
    // 访问jsonObject对象属性name的值
    alert(jsonObject.name)
 
  }
            
  // 遍历JSON对象
  function traversal()
  {
    var packJson = { "name": "Liza", "password": "123"} ;
    //遍历packJson对象的每个属性
    for( var k in packJson ){
      alert(k + " " + packJson[k]);
   }
}
</script>
</head>
<body>
 <h3>JavaScript开发案例</h3>
<input type="button" value="访问JSON对象" onclick="show()"/></p>
<input type="button" value="遍历JSON对象" onclick="traversal()"/></p>
</body>
<html>

访问JSON数组

访问JSON数组和访问JS数组方式相同。

案例3:遍历JSON数组(案例代码见unit5\case3.html):

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
  // 遍历JSON数组
  function traversal()
  {
    var packJson = [{ "name": "Liza", "password": "123"},
                     { "name": "Mike", "password": "456"}];
    //遍历packJson 数组时,i为索引
    for( var i in packJson){
      alert(packJson[i].name + " " + packJson[i].password);
    }
  }
</script>
</head>
<body>
<h3>JavaScript开发案例</h3>
<input type="button" value="遍历JSON数组" onclick="traversal()"/></p>
</body>
<html>


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论