首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JSON與ajax使用方法

JSON與ajax使用方法

作者头像
用户9857551
发布于 2022-06-28 00:33:40
发布于 2022-06-28 00:33:40
1.1K0
举报
文章被收录于专栏:Angular学习规划Angular学习规划

JSON:JavaScript 对象表示法(JavaScript Object Notation

是存储和交换文本信息的语法。类似 XML。 比 XML 更小、更快,更易解析。 JSON 是一种数据格式。它本身是一串字符串,只是它有固定格式的字符串,符合这个数据格式要求的字符串,我们称之为JSON。 JSON 常用来数据传输,因为它易于程序之前读写操作。 JSON 它其实是来自JavaScript对对象(Object)的定义。但是它作为数据格式来使用的时候,和JavaScript没有任何关系,它只是参照了JavaScript对对象定义的数据格式。 JSON 它可以服务任何语言,C、C++、JavaObjective-CPython、Go、等,在各个语言中的字典、Map和JSON是类似的结构,所以它们之间可以相互转换。 JSON键值对数据结构如上图,以 “{” 开始,以 “}” 结束。中间包裹的为Key : Value的数据结构。

代码语言:javascript
AI代码解释
复制
{"name":"sojson"}

JSON 值范围

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

json的使用

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。 创建包含 JSON语法的 JavaScript 字符串:

代码语言:javascript
AI代码解释
复制
var txtJson = '{ "star_male" : [' +
'{ "name":"鹿晗" , "age":26 },' +
'{ "name":"李易峰" , "age":29 },' +
'{ "name":"陈赫" , "age":31 } ]}';

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

代码语言:javascript
AI代码解释
复制
var obj = eval ("(" + txtJson + ")");

总结就是:

代码语言:javascript
AI代码解释
复制
var txtJson = '{ "star_male" : [' +
'{ "name":"鹿晗" , "age":26 },' +
'{ "name":"李易峰" , "age":29 },' +
'{ "name":"陈赫" , "age":31 } ]}';

//利用函数 eval() 转换成JSON对象
var obj = eval ("(" + txtJson + ")");

//输出数组的第一个对象的name值
alert("得到的值:" + obj.star_male[0].name);

常见的 JSON 格式

代码语言:javascript
AI代码解释
复制
{"key":"value"},最简单的JSON 格式。
{"key1":"value1","key2":"value2"},一个JSON中有多个键值对的表达方式。
{"key":["a","b","sojson.com"]},value是一个Array 的JSON格式。
{"sojson":["5年","JSON在线解析","sojson.com",true,1,null]},value是一个Array 的JSON格式,并且这个数组中有多重类型的元素,有String,Boolean,Number,null{"key":{"json":"json for javascript"}},value 是JSONObject的JSON格式。

JSON 对象 & JSONObject

JSON 语法是 JavaScript 对象的表达方式,我们又简单的分为JSONObject 和 JSONArray 其实都是JSON 对象的表达方式,只是从结构上做了区分。 JSON 对象语法规则

代码语言:javascript
AI代码解释
复制
数据在名称/值对中,如{"domain":"sojson.com"}
可以多对键值对,如{"domain":"sojson.com","author":"soゝso","email":"i@itboy.net"}
值里面可以有数组(Array),如{"domain_array":["sojson.com","soso.pub","soso.run","isoso.xin","isoso.xin"]}

JSON 使用 JavaScript 获取元素值

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

代码语言:javascript
AI代码解释
复制
var json =  {
        "name": "本兮",
        "age": "22"
}
var name = json.name;
alert("name:" + json.name);
var age = json.age;
alert("age:" + json.age);

JSON对象特殊处理

当我们对象里有特殊的Key,或者不是字符串的Key,处理起来稍微有点麻烦。

代码语言:javascript
AI代码解释
复制
var json = {
    "1": {
        "name": "本兮",
        "age": "22"
    },
    "2": {
        "name": "关晓彤",
        "age": "20"
    }
};
alert(json.1.name);// X 错误 throw Uncaught SyntaxError;
//正确的打开姿势如下:
alert(json[1].name);
alert(json["1"].name);
alert(json["1"]["name"]);
//错误,undefined
alert(json["1"][name]);

JSON 数组 && JSONArray

JSON数组是在JSON对象中延伸出来的,多个JSON对象就是一个JSON数组,数据之间由逗号分隔,花括号保存对象,方括号保存数组。 JSON数组语法规则

代码语言:javascript
AI代码解释
复制
JSONArray 最外层是“[”和“]”包裹起来的:如[{"domain":"sojson.com"}]。
JSONArray 是由一个或多个 JSONObject 组合起来的:如[{"domain":"sojson.com"},{"age":"5年"}]。
多个 JSONObject 由逗号分隔。
JSONArray 取值通过下标或者迭代获取每一个element:如[{"domain":"sojson.com"},{"age":"5年"}][0].domain。
上面的[{"domain":"sojson.com"},{"age":"5年"}][0].domain后面跟着“[0]”就是获取第一个元素(JSONObject),然后取它的name属性。

舉例:

代码语言:javascript
AI代码解释
复制
var jsonArray = [{"domain":"sojson.com"},{"age":"5年"}];
alert(jsonArray[0].domain);//sojson.com

JSON 使用 JavaScript 获取元素值

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

代码语言:javascript
AI代码解释
复制
var star_male =  [
    {
        "name": "鹿晗",
        "age": "26"
    },
    {
        "name": "李易峰",
        "age": "29"
    },
    {
        "name": "陈赫",
        "age": "31"
    }
]
var name = star_male[0].name;
alert(name);

迭代获取Array里所有的值:

代码语言:javascript
AI代码解释
复制
{
	for(var i in star_male){
		alert("name:" + star_male[i].name);
		alert("age:" + star_male[i]['age']);//换个姿势
	}
	//再换个姿势,下面写法和上面的效果是一样的。
	/*
	for(var i=0;i <star_male.length;i++){
		alert("name:" + star_male[i].name);
		alert("age:" + star_male[i]['age']);//换个姿势
	}*/
}

JSON.parse() 语法

JSON.parse()是Javascript中一个常用的 JSON 转换方法,JSON.parse()可以把JSON规则的字符串转换为JSONObject,JSON.parse()很方便,并且几乎支持所有浏览器。 外面被引号包裹起来了,证明它就是个字符串,而不是JSON对象,那么我们要转换,这个时候JSON.parse() 就可以派上用场了。

代码语言:javascript
AI代码解释
复制
var json = JSON.parse('{"domain" : "sojson.com","author":"soso"}');
alert("json.domain = " + json.domain);
//alert(json['domain']);//或者这样也可以

JSON.stringify()

JSON.stringify()是Javascript中一个常用的内置 JSON 转换方法,JSON.stringify()可以把JSONObject 转化为 JSON 规则的字符串转换为,JSON.stringify()很方便,并且几乎支持所有浏览器。

代码语言:javascript
AI代码解释
复制
JSON.stringify(value[, replacer[, space]])
代码语言:javascript
AI代码解释
复制
参数
value	将要序列化成 一个JSON 字符串的值。	必选
replacer	如果是一个function,那么每个序列化成JSON的value都会经过这个function,如果是一个Array,那么序列化后的JSON字符串中的Key在这个数组中才会加入到返回的JSON 字符串中去。	可选
space	用于美化JSON字符串,如果是一个Number类型,代表的就是多少个空格。如果是0或者小于0,那么就是没有空格(和不填此项没有区别),如果是字符串,那么直接填充。	可选

JSON.stringify() JSON To String

代码语言:javascript
AI代码解释
复制
var json = {"domain" : "sojson.com","author":"soso"}
alert(JSON.stringify(json));

JSON.stringify() replacer参数(1)

replacer参数可以是function,也可以是Array,如果是function,他接收的参数有2个,第一个是Key,第二个是Value。

replacer function返回值说明:

  • 如果返回一个 Number, 转换成相应的字符串被添加入JSON字符串。
  • 如果返回一个 String, 该字符串作为属性值被添加入JSON。
  • 如果返回一个 Boolean, “true” 或者 "false"被作为属性值被添加入JSON字符串。
  • 如果返回undefined,该属性值不会在JSON字符串中输出。
代码语言:javascript
AI代码解释
复制
var json = {"domain" : "sojson.com","author":"soso"}
json = JSON.stringify(json, function(key,value){
	if(key == "domain"){
		return undefined;//踢出domain
	};
    return value;
});

如参数replacer是一个数组,序列化结果集的Key只输出命中的,miss的属性过滤。

代码语言:javascript
AI代码解释
复制
var json = {"domain" : "sojson.com","author":"soso"}
json = JSON.stringify(json, ['author']);
 alert("JSON = " + json);//结果只留下了命中Key的元素组合。

Ajax与JSON详细讲解,Ajax传递JSON数据与Ajax接受JSON数据

Ajax传递JSON数据 Ajax原生的JavaScript写法分为六步:

1.创建Ajax request对象 2.绑定监听回调函数 3.打开一个Ajax请求 4.设置请求头(setRequestHeader) ,具体要设置什么请求头,这个看业务需要。 5.发送请求。 6.接受请求。

代码语言:javascript
AI代码解释
复制
//1.创建ajax request对象
var request = new XMLHttpRequest();
//2.绑定监听回调函数
request.onreadystatechange = function(){
    //判断返回状态是否正常
    if(request.readyState ===4 &&request.status === 200){
        //6.接收数据
        var res = request.responseText;
        //输出数据
        console.log('返回值',res);
    }else{
        //错误
        console.log('error');
    }
};

/**
 * 3.打开请求
 * 第一个参数为请求方式,常用可选为 GET/POST,还有DELETE、UPDATE、OPTIONS等
 * 第二个参数为请求的链接,可以是相对路径和绝对路径。
 * 第三个参数设置请求为同步还是异步,true为异步,false为同步
 */
request.open("POST","https://cdn.sojson.com/file/demo-json.json",true);
/**
 * 4. setRequestHeader 方法可以设置请求头,这个看业务需要,这里设置为表单提交
 */
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
/**
 * 5.发送请求
 *
 * GET请求方式:request.send();
 *
 * POST请求方式:可以传参,可以是字符型的JSON或者 ?和 &方式如下:
 * request.send("name=Alice&age=23");
 * //这个方式如果后端接受不到参数,请把请求头改成 "Content-type","application/json"
 *
 *
 *
 */
//发送JSON数据
request.send('{"name":"Alice","age":23}');

Ajax接受JSON数据

Ajax接受JSON数据,是表示被请求方返回为JSON数据,前端需要接收数据,并且解析数据。

Ajax 步骤还是和上面一样,还是6个步骤,我们直接看代码。

代码语言:javascript
AI代码解释
复制
//1.创建ajax request对象
var request = new XMLHttpRequest();
//2.绑定监听回调函数
request.onreadystatechange = function(){
    //判断返回状态是否正常
    if(request.readyState ===4 &&request.status === 200){
        //6.接收数据
        var res = request.responseText;
        //输出数据
        console.log('返回值',res);

        /**
         * 如果返回来的参数是JSON,就可以直接转换。
         */
        var json = JSON.parse(res);
        console.log('返回值-转换JSON对象',json);
        console.log('demo:',json.demo);
        console.log('Name:',json.Name);
        console.log('Birthday:',json.Birthday);
        console.log('Birthday:',json.Birthday);
        console.log('Birthplace:',json.Birthplace);
        console.log('Info:',json.Info);

    }else{
        console.log('error');
    }
};

/**
 * 3.打开请求
 * 第一个参数为请求方式,常用可选为 GET/POST,还有DELETE、UPDATE、OPTIONS等
 * 第二个参数为请求的链接,可以是相对路径和绝对路径。
 * 第三个参数设置请求为同步还是异步,true为异步,false为同步
 *
 * 备注:GET请求,直接把参数以 ?和 & 来传参,如 url+  ?name=Alice&age=23
 */
request.open("GET","https://cdn.sojson.com/file/demo-json.json",true);
/**
 * 4. setRequestHeader 方法可以设置请求头,这个看业务需要,这里设置为表单提交
 */
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
/**
 * 5.发送请求
 *
 * GET请求方式:request.send();
 *
 * POST请求方式:可以传参,可以是字符型的JSON或者 ?和 &方式如下:
 * request.send("name=Alice&age=23");
 * //这个方式如果后端接受不到参数,请把请求头改成 "Content-type","application/json"
 * request.send('{"name":"Alice","age":23}');
 *
 *
 */
request.send();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JSON跨语言陷阱:为何“通用格式”并不真正通用
作为JavaScript对象表示法,JSON因其简洁性和易读性已成为现代Web开发中数据交换的事实标准。从REST API响应到配置文件,从状态管理到数据持久化,JSON无处不在。许多开发者认为JSON是一种完全跨语言兼容的格式——毕竟它只是文本,对吧?
叶一一
2025/10/09
4711
JSON跨语言陷阱:为何“通用格式”并不真正通用
ajax提交JSON数组及Springboot接收转换为list类
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/91379102
程裕强
2019/07/02
4.1K0
Json对象与Json字符串互转(4种转换方式)
  $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
李才哥
2019/07/10
19.3K0
Json对象与Json字符串互转(4种转换方式)
慎用 JSON.stringify
项目中遇到一个 bug,一个组件为了保留一份 JSON 对象,使用 JSON.stringify 将其转换成字符串,这样做当然是为了避免对象是引用类型造成数据源的污染。
GopalFeng
2022/11/29
6940
JSON 基本使用
JSON常被拿来与XML做比较,因为JSON 的诞生本来就多多少少要有取代XNL的意思。相比 XML,JSON的优势如下:
兮动人
2021/05/31
2K0
JSON 基本使用
煦涵说JSON
JSON(Javascript Object Notaion, javascript 对象表示法), 是一种数据交换格式,能够在服务器端交换数据, 2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。
用户6256742
2024/06/27
2300
Django之json、Ajax简介及实例介绍
JSON 格式于2001年由 Douglas Crockford 提出,目的就是取代繁琐笨重的 XML 格式。
菲宇
2019/06/13
7.6K0
Django之json、Ajax简介及实例介绍
Ajax(三)
基于 new 出来的 XMLHttpRequest 实例对象,可以发起 Ajax 的请求。
且陶陶
2023/04/12
8780
Ajax(三)
JavascriptJSON
JSON是JavaScript Object Notation的缩写,它是一种基于文本的轻量级数据交换格式。它是一门独立的语言。
Andromeda
2022/10/27
1.3K0
JavascriptJSON
JSON
    一般情况下,我们的json数据都是从服务端获取到的,获取的json数据是以字符串的形式返回的。这个字符串虽然是json格式的,但是不能被直接使用,我们必须将该字符串转化为一个对象才能正常解析它
用户3159471
2018/09/13
2.5K0
Django---Ajax
Ajax准备知识:json 什么是json? 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 讲json对象,不得不提到JS对象: 合格的json对象:
用户1214487
2018/01/24
5.5K0
Django---Ajax
JSON.stringify()和JSON.parse() 的使用总结
如果一个被序列化的对象拥有 toJSON 方法,那么 toJSON 方法后的返回值会被序列化,例如:
用户8921923
2022/10/24
1.8K0
AJAX和JSON
open方法不会向服务器发送真正请求,它相当于初始化请求并准备发送只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全原因而报错。
乐心湖
2021/01/18
3.3K0
AJAX和JSON
javascript基础重点
1.在javascript中使用 == 比较,会自动转换数据类型再比较,有时候会 得到非常诡异的结果;一般情况下使用 === 比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较
lin_zone
2018/08/15
1.1K0
JSON.parse() and JSON.stringify()
最近发现一个比较好的关于前端的英文博文网站,主要是关于Javascript、Vuejs、React、Angular、CSS的前端网站博文网站,网站地址是:https://alligator.io/,感兴趣的可以看一下,跟着学习也不错。 本文翻译自JSON.parse() and JSON.stringify() JSON对象,在所有的现代浏览器中是有效的,有两个非常有用的方法用于处理JSON格式的内容:parse和stringify。JSON.parse()接收一个JSON字符串作为参数,将它转换成一个JavaScript对象。JSON.stringify()接收一个Javascript对象作为参数,转换它为一个JSON字符串。 示例如下:
ccf19881030
2020/04/10
1.4K0
json字符串数组转json数组
当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时。 首先要导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包
全栈程序员站长
2022/06/24
7.1K0
Json的常用方法[通俗易懂]
在java中要想方便的操作json首先要引入json的jar包,如json-lib-2.4-jdk15.jar
全栈程序员站长
2022/08/04
8170
慎用JSON.stringify
项目中遇到一个 bug,一个组件为了保留一份 JSON 对象,使用 JSON.stringify 将其转换成字符串,这样做当然是为了避免对象是引用类型造成数据源的污染。
GopalFeng
2020/09/24
1.2K0
JSON.parse与JSON.stringify
JSON:JavaScript Object Notation(JavaScript对象表示法);甚至我们就可以大致认为JSON就是Javascript的对象,只不过范围小上一些。
用户1149564
2018/12/06
9130
Python进阶30-Django AJAX
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
1.1K0
Python进阶30-Django AJAX
相关推荐
JSON跨语言陷阱:为何“通用格式”并不真正通用
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
首页
学习
活动
专区
圈层
工具
MCP广场
首页
学习
活动
专区
圈层
工具
MCP广场