javascript 数组 key-JSON(JavaScript 对象表示法)

2023-08-29 0 4,917 百度已收录

JSON(JavaScriptObjectNotation,JS对象表示法)是一种轻量级的数据交换格式,一般用于从服务器到网页的数据传输。 与 XML 一样,JSON 也是一种基于纯文本的数据格式。

Json文件的文件后缀为.Json,Json文本的MIME类型为application/Json。

出现 JSON

在 JSON 出现之前,您仍然使用 XML 来传递数据。 由于XML是一种纯文本格式,因此适合在Internet上交换数据。 XML 本身并不复杂。 然而,在增加了DTD、XSD、XPath、XSLT等大量复杂的规范之后,任何一个正常的软件开发人员遇到XML都会觉得头大。 最后,你发现即使你努力学习几个月,也可能对XML规范不清楚。

终于,在2002年的三天时间里,道格拉斯·克罗克福德(Douglas Crockford)的朋友发明了JSON这种超轻量级的数据交换,以拯救一位深陷水深火热、常年被几大软件巨头欺骗的软件工程师。 格式。

由于 JSON 非常简单,因此它很快风靡 Web 世界并成为 ECMA 标准。 几乎所有的编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript外部有JSON解析。

Json结构

Json有两种基本结构,即Json对象和Json字段。 通过Json对象和Json链表的组合可以表示各种复杂的结构。

Json对象

对象结构以 { 开头,以 } 结尾。 中间部分由0个或多个以英文分隔的键/值对组成,键和值之间以英文:分隔。 宾语结构的句子结构如下:

其中,key必须是String类型,并且需要双冒号。 value可以是String、Number、Object、Array等数据类型。例如,一个person对象包含姓名、密码、年龄等信息,JSON表示如下

{
    "pname":"张三",
    "password":"123456",
    "page":40
}

JSON 对象保存在花括号内。

与 JavaScript 一样,对象可以保存多个键/值对

Json 对象和 JavaScript 对象

JavaScript 中的一切都是对象,例如字符串、数字、数组、日期等等。 在 JavaScript 中,对象是具有属性和方法的数据。

我们一般所说的Json对象是Json格式的JavaScript对象或者是符合Json数据结构要求的JavaScript对象。

与 JsonJavaScript

意义

只是一种数据格式

代表一个类的实例

传播

可以跨平台数据传输,速度快

无法传送

表现

1. key必须加双冒号

2、值不能是方法函数,不能是undefined/NaN

1. 不带破折号的按键

2. 值可以是函数、对象、字符串、数字、布尔值等。

互相转换

Json 到 JavaScript:

1.Json.parse(JsonStr); (不兼容IE7)

2.eval("("+JsonStr+")"); (兼容所有浏览器

JavaScript对象转换Json:

杰森。 字符串化(jsObj);

JSON 和 JavaScript 对象之间的转换

Json链表

链表结构以[开头,以]结尾,中间部分由0个或多个以英文分隔的值组成的列表。 链表结构的句子结构如下:

Json链表的元素类型可以不一致。 例如,item1可以是字符串类型,item2可以是数字类型,item3可以是对象类型。 链表的最后一个元素前面不能有冒号。

复杂链表类型

这里我们创建一个包含三个对象的字段。

第一个是一个 HTML 对象,它也是一个包含 5 个元素的链表。 第二个是一个 JavaScript 对象,它也是一个包含 4 个元素的链表。 第三个是Server对象javascript 数组 key,它也是一个包含3个元素的链表。

复杂对象字段的组成

上述两种(对象、数组)数据结构还可以组合形成更复杂的数据结构。

对象包含字段

这里我们创建一个复杂的 siteInfo 对象。

siteInfo对象的siteUrl属性值为shanghai,siteInfo对象的siteAddr属性值为shanghai,siteInfo对象的sitePriority属性值为1,siteInfo对象的siteModule属性值为链表。

siteModule链表有两个元素,第一个元素是HTML,第二个元素是JavaScript。 这两个元素也是链表类型。

字段包含对象

与 JavaScript 中一样,链表可以包含对象:

"employees":[  
    {"firstName":"John", "lastName":"Doe"},  
    {"firstName":"Anna", "lastName":"Smith"},  
    {"firstName":"Peter", "lastName":"Jones"}  
]

在上面的例子中,对象“employees”是一个链表。 包含三个对象。

每个对象都是员工的一条记录(名字和姓氏)。

JSON语法规则

为了统一解析,JSON字符串必须使用双冒号“”,Object键也必须使用双冒号“”。

Json 通配符对

Json数据的写入格式为:名称/值对。 与 JavaScript 对象属性一样。一个名称对应一个值,名称/值对由数组名称(以双冒号表示)组成,写在逗号旁边,后跟值

Json值的数据类型

Json值可以是以下类型:

类型描述

数量(数量)

Json数字类型可以支持整数或浮点类型,但不能使用八位补码和十六位补码格式。 Json 数字类型也不能使用 NaN 和 Infinity。

字符串类型(String)

Json字符串必须写在双冒号之间,并且只能是双冒号。 换行的 Unicode 字符和反斜杠通配符。 Json中没有字符类型,字符类型就是单个字符串。

布尔值

Json布尔值的true或false只能大写。 用双冒号引用值,而不是布尔值。

字段(数组)

[值的有序序列]。

目的

{键:值对的无序集合。 }

无效的

无效的。

Json 和 JavaScriptJSON 使用 JavaScript 语法,但 JSON 格式只是文本。

任何编程语言都可以读取文本并将其作为数据格式传递。

我的朋友Douglas在Yahoo担任了多年的中级架构师,所以他自然喜欢JavaScript。 他设计的Json实际上是JavaScript语法的一个子集,是JavaScript对象的字符串表示。 Json 使用文本来表示 JavaScript 对象的信息,本质上是字符串。

Json 使用 JavaScript 语法

由于 Json 使用 JavaScript 语法,因此不需要额外的软件来在 JavaScript 中处理 Json。

这里我们通过JavaScript创建一个对象字段,并为该对象字段创建一个形式参数。

访问内容

改变数据

更改对象第二个元素的类别:

modules[1].category = "ES6";

Json和JavaScript对象遍历

Json字符串的遍历和Json字符串的遍历都是使用for-in循环来遍历的。

Json遍历

我们创建一个haicoder.html文件并输入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Json遍历</title>
    <script type="text/javascript">
        console.log("嗨客网(www.haicoder.net)");
        var str = {"name":"haicoder", "url":"www.haicoder.net"};
        for (var k in str) {
            console.log(k + " -> " + str[k]);
        }
    </script>
</head>
<body>
</body>
</html>

首先,我们定义一个Json字符串str。 接下来,我们使用for循环来遍历Json字符串,k是Json字符串中的key,str[k]是Json字符串key对应的值。

用浏览器打开文件,浏览器输出如右图:

JavaScript 对象遍历

我们创建一个haicoder.html文件并输入以下代码:

!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript对象遍历</title>
    <script type="text/javascript">
        console.log("嗨客网(www.haicoder.net)");
        var obj = {name:"haicoder", url:"www.haicoder.net"};
        for (var k in obj) {
            console.log(k + " -> " + obj[k]);
        }
    </script>
</head>
<body>
</body>
</html>

首先,我们定义一个 JavaScript 对象 obj。 接下来,我们使用for循环来遍历JavaScript对象,k是JavaScript对象的key,obj[k]是JavaScript对象key对应的值。

Json和JavaScript链表遍历

Json链表的遍历和JavaScript链表的遍历都是使用for-in循环来遍历

Json链表遍历

我们创建一个haicoder.html文件并输入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Json数组遍历</title>
    <script type="text/javascript">
        console.log("嗨客网(www.haicoder.net)");
        var jsonArr = [
            {"mod":"json", "url":"www.haicoder.net/json"},
            {"mod":"vue", "url":"www.haicoder.net/vue"},
            {"mod":"python", "url":"www.haicoder.net/python"}
        ]
        for (var k in jsonArr) {
            console.log(k + " -> " + jsonArr[k].mod + " -> " + jsonArr[k].url);
        }
    </script>
</head>
<body>
</body>
</html>

首先,我们定义一个Json链表,这个字段上面的每个元素都是一个对象。 接下来我们使用for循环来遍历Json链表,k是Json链表的下标,jsonArr[k]是Json链表的下标key对应的值。

我们用 。 获取Json链表中每个对象的值。

JavaScript 对象字段遍历

var Js_Result = [
  {
    name: "haicoder",
    url: "www.haicoder.net",
    age: 20
  },
  {
    name: "JavaScript",
    url: "www.JavaScript.net",
    age: 30
  }
]
for (var i in Js_Result ){             //  i为数组角标  
 console.log(i+" "+Js_Result[i].firstName
 +" "+Js_Result[i].lastName
 +" "+Js_Result[i].age);
}
//结果输出为
0 haicoder www.haicoder.net 20
1 JavaScript www.JavaScript.net 30

将JavaScript对象保存到链表Js_Result中,并使用for循环遍历Json_Result,i为链表的角标,通过Js_Result[i].firstName方法获取对应的值。

序列化

将任何 JavaScript 对象转换为 JSON 就是将此对象序列化为 JSON 格式的字符串,以便可以通过网络传递给其他计算机。

我们首先将小明对象序列化为JSON格式的字符串:

为了使输出看起来更好,可以通过缩进添加参数和输出:

JSON.stringify(xiaoming, null, '  ');

结果:

{
  "name": "小明",
  "age": 14,
  "gender": true,
  "height": 1.65,
  "grade": null,
  "middle-school": ""W3C" Middle School",
  "skills": [
    "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}

您还可以传入一个函数javascript 数组 key,以便该函数首先处理对象的每个通配符对:

function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}
JSON.stringify(xiaoming, convert, '  ');

里面的代码让所有属性值变成小写:

{
  "name": "小明",
  "age": 14,
  "gender": true,
  "height": 1.65,
  "grade": null,
  "middle-school": ""W3C" MIDDLE SCHOOL",
  "skills": [
    "JAVASCRIPT",
    "JAVA",
    "PYTHON",
    "LISP"
  ]
}

如果我们还想精确控制小明如何序列化,我们可以为小明定义一个 toJSON() 方法,直接返回需要 JSON 序列化的数据:

var xiaoming = {
    name: '小明',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '"W3C" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
    toJSON: function () {
        return { // 只输出name和age,并且改变了key:
            'Name': this.name,
            'Age': this.age
        };
    }
};
JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'

反序列化

一般我们从服务器读取JSON数据,并将数据显示在网页上。

收到一个 JSON 格式的字符串,我们直接使用 JSON.parse() 将其变成 JavaScript 对象:

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}
JSON.parse('true'); // true
JSON.parse('123.45'); // 123.45

JSON.parse() 还可以接收一个函数来转换解析的属性:

Json的特点 Json方便机器解析和生成,客户端JavaScript可以简单地通过eval()读取Json数据。 Json 本质上是自描述的,易于人们阅读和编写。 Json 采用完全独立于语言的文本格式。 格式均经过压缩,占用带宽更少。 Json解析器和Json库支持许多不同的编程语言,目前几乎所有编程语言都支持Json。 由于Json格式可以被服务器端代码直接使用,大大简化了服务器端和客户端的代码开发量,并且完成的任务不变,易于维护。 Json 比 XML 更小、更快、更容易解析。 Json还规定字符集必须是UTF-8,所以表达多种语言是没有问题的。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 数组 key-JSON(JavaScript 对象表示法) https://www.wkzy.net/game/179931.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务