JSON 基础知识总结

简介: JSON,说白了就是JavaScript用来处理数据的一种格式,这种格式非常简单易用。JSON大部分都是用来处理JavaScript和web服务器端之间的数据交换,把后台web服务器的数据传递到前台,然后使用JavaScript进行处理,例如ajax等 JSON支持的语言非常多,包括JavaS

JSON是什么

JSON,说白了就是JavaScript用来处理数据的一种格式,这种格式非常简单易用。JSON大部分都是用来处理JavaScript和web服务器端之间的数据交换,把后台web服务器的数据传递到前台,然后使用JavaScript进行处理,例如ajax等

JSON支持的语言非常多,包括JavaScript、C#、PHP、Java等等,这是由于JSON独立于语言的轻量级的数据交换格式,这个特点有点类似于SQL语言

JSON的结构

JSON结构共有2种:无序的对象结构、有序的数组结构;

无序的对象结构

对象结构是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的

var jsonObj = {
    "键名1":值1,
    "键名2":值2,
    ……
    "键名n":值n
}

这里的键名是字符串,但是值可以是数值、字符串、对象、数组或逻辑true和false

有序的数组结构

JSON数组结构是用中括号“[]”括起来,中括号内部由0个或多个以英文逗号“,”分隔的值列表组成

var arr =
[
    {
        "键名1":值1,
        "键名2":值2
    },
    {
        "键名3":值3,
        "键名4":值4
    },
    ……
]

在JSON数组中,每一对“{}”相当于一个JSON对象

JSON 数据格式

JSON是JavaScript Object Notation的简称,是一种轻量的数据表示方法。json格式采用key:value的方式记录数据,非常直观,比XML简洁,因而大受欢迎

添加 JSON

简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户端传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表

值的数组

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性

{ "people": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

掌握了JSON格式后,在JavaScript中将JSON数据赋值给变量就很简单了。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的 API 或工具包

例如,可以创建一个新的JavaScript变量,然后将 JSON 格式的数据字符串直接赋值给它

var people = { "people": [
   { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
   { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
   { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
 ],
 "authors": [
    { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
    { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
    { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
   ]
}

访问数据

实际上,只需用点号表示法来表示数组元素。所以,要想访问 people 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:

people.people[0].lastName;

利用这样的语法,可以处理任何 JSON 格式的数据

转换回字符串

String newJSONtext = people.toJSONString();

可以将任何 JavaScript 对象转换为 JSON 文本

JSON 数据类型

JSON 格式支持以下数据类型:

类型 描述
数字型(Number) JavaScript 中的双精度浮点型格式
字符串型(String) 双引号包裹的 Unicode 字符和反斜杠转义字符
布尔型(Boolean) true 或 false
数组(Array) 有序的值序列
值(Value) 可以是字符串,数字,true 或 false,null 等等
对象(Object) 无序的键:值对集合
空格(Whitespace) 可用于任意符号对之间
null

数字型

JavaScript 中的双精度浮点型格式,取决于实现。不能使用八进制和十六进制格式,在数字中不能使用 NaN 和 Infinity

下表展示了数字类型:

类型 描述
整形(Integer) 数字1-9,0和正负数
分数(Fraction) 分数,比如 .3,.9
指数(Exponent) 指数,比如 e,e+,e-,E,E+,E-

字符串型

零个或多个双引号包裹的 Unicode 字符以及反斜杠转义序列

字符就是只有一个字符的字符串,长度为 1

下表展示了字符串类型:

类型 描述
" 双引号
\ 反斜线
/ 斜线
b 退格符
f 换页符
n 换行符
r 回车符
t 水平制表符
u 四位十六进制数字

布尔型

包含 true 和 false 两个值

数组

它是一个有序的值集合,使用方括号闭合,这意味着数组以 [ 开始,以 ] 结尾,值使用 ,(逗号)分割,数组索引可以以 0 或 1 开始,当键名是连续的整数时应该使用数组

定义一维数组

var s1=new Array();
s1=[1,2,3,4]或者s1[0]=1,s1[1]=2,s1[3]=3,s1[4]=4;
alert(s1[0]);//结果为1;

定义二维数组

var s1=new Array();
var s1=[[3,1],[2,3,4],3,[4,5,6,7,8]];
alert(s1[1][0]);结果为2;

对象

它是一个无序的名/值对集合,对象使用大括号闭合,以 '{' 开始,以 '}' 结尾,每个名称后面都跟随一个 ':'(冒号),名/值对使用,(逗号)分割,键名必须是字符串并且不能同名,当键名是任意字符串时应该使用对象

创建简单的对象

JSON对象可以使用JavaScript创建。我们来看看使用 JavaScript 创建 JSON 对象的各种方式:

1.创建一个空对象:

var JSONObj = {};

2.创建一个新对象:

var JSONObj = new Object();

3.创建一个 bookname 属性值为字符串,price属性值为数字的对象。可以通过使用 '.' 运算符访问属性

var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };

定义对象

var status_process = {
    "name5" : '闲置期',
    "name1" : '播种期',
    "name2" : '苗期',
    "name3" : '生长期',
    "name4" : '采收期'
   }    
  alert(status_process);//结果为:Object:Object;

定义数组对象

var books = {
    "Pascal" : [ 
        { "Name"  : "Pascal Made Simple", "price" : 700 },
        { "Name"  : "Guide to Pascal", "price" : 400 }
    ],                       
    "Scala"  : [
        { "Name"  : "Scala for the Impatient", "price" : 1000 }, 
        { "Name"  : "Scala in Depth", "price" : 1300 }
    ]    
}  
var i = 0
document.writeln("<table border='2'><tr>");
for(i=0;i<books.Pascal.length;i++)
{   
    document.writeln("<td>");
    document.writeln("<table border='1' width=100 >");
    document.writeln("<tr><td><b>Name</b></td><td width=50>" + books.Pascal[i].Name+"</td></tr>");
    document.writeln("<tr><td><b>Price</b></td><td width=50>" + books.Pascal[i].price +"</td></tr>");
    document.writeln("</table>");
    document.writeln("</td>");
}
document.writeln("</tr></table>");

json二维对象

var status_process = {
 name5 : {name3:'空闲闲置期'},
 name1 : '播种期',
 name2 : '苗期',
 name3 : '生长期',
 name4 : '采收期'
};
alert(status_process["name5"]["name3"]);
alert(status_process.name5.name3);//结果都为:'空闲闲置期'

json对象的使用

var status_process = {
    name5 : '闲置期',
    name1 : '播种期',
    name2 : '苗期',
    name3 : '生长期',
    name4 : '采收期'
};
alert(status_process["name5"]);
alert(status_process.name5);//两个都为:闲置期

json字符串

所谓json字符串,是指该字符串变量的值与json的格式相同,但是不是json对象

var s1="{";
var s2 = " 'name5' : '闲置期',  'name1' : '播种期','name2' : '苗期','name3' : '生长期','name4' : '采收期'";
var s3="}";
var status_process=s1+s2 +s3;

虽然status_process的值符合json对象的格式,但是它不是对象,只是一个字符串(是拼凑出来的),将字符串转换为json对象使用函数eval,eval("(" + status_process+ ")")。

空格

可以在任意一对符号之间插入。可以添加用来让代码更可读

null

意味着空类型

var i = null;
if(i==1) {
    document.write("<h1>value is 1</h1>");  
} else {
    document.write("<h1>value is null</h1>");
}

JSON 值

包括:数字(整型和浮点型)、字符串、布尔值、数组、对象、null

var i =1;
var j = "sachin";
var k = null;
目录
相关文章
|
JSON JavaScript Java
2、JSON基础知识总结(2)
JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript 编程语言的一个子集。
1058 0
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
48 1
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
25天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
29天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
23天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
114 0
在Java中处理JSON数据:Jackson与Gson库比较
|
2月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
2月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
87 2
|
3月前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据