当前位置: 首页 > news >正文

AJAX——JSON

目录

一、JSON概述

二、JSON对象语法

三、JSON序列化方法

四、JSON与XML比较

五、Java对象与Json对象的转换

六、Js解析服务器发送过来的JSON字符串

七、$.getJSON()


一、JSON概述

JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法),基于 ECMAScript,存放的是的类似于键值对,本质上来说是javascript的数据类型,是一种轻量级的数据交互格式,简单来说呢,json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。

JSON是用字符串来表示Javascript对象,例如可以在Servlet中发送一个JSON格式的字符串给客户端Javascript,Javascript可以执行这个字符串,得到一个Javascript对象。

二、JSON对象语法

JSON 语法:

  • 数据在名称/值对中

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

    var person = {"name":"zhangSan","age":"18", "sex":"male"};

注意:

  1. key要在双引号中,不能使用单引号

  2. 字符串必须使用双引号表示,不能使用单引号  

JSON值:

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true 或 false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

三、JSON序列化方法

在ES5中引用了JSON全局对象,该对象有两个常用的方法

1. parse方法:解析JSON字符串,转回对应的JavaScript类型;

JSON.parse(text[, reviver])

参数

  • text:要被解析成 JavaScript 值的JSON字符串。

  • reviver 可选:转换器,如果传入该参数 (函数),可以用来修改解析生成的原始值,调用时机在 parse 函数返回之前。

返回值

Object 类型,对应给定 JSON 文本的对象/值。

异常

若传入的字符串不符合 JSON 规范,则会抛出 SyntaxError 异常。

2. stringify方法:将JavaScript类型转成对应的JSON字符串;

JSON.stringify(value[, replacer [, space]])

 

参数

  • value:将要序列化成 一个 JSON 字符串的值。

  • replacer 可选:如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。

  • space 可选:指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为 10。该值若小于 1,则意味着没有空格;如果该参数为字符串(当字符串长度超过 10 个字母,取其前 10 个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格。

返回值

一个表示给定值的 JSON 字符串。

异常

  • 当在循环引用时会抛出异常TypeError ("cyclic object value")(循环对象值)

  • 当尝试去转换 BigInt 类型的值会抛出TypeError ("BigInt value can't be serialized in JSON")(BigInt 值不能 JSON 序列化).

四、JSON与XML比较

  • 可读性:XML胜出;

  • 解码难度:JSON本身就是JS对象(主场作战),所以简单很多;

  • 流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。

五、Java对象与Json对象的转换

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

fastjson优点:速度快、使用广泛、使用简单、功能完备、测试完备(之前爆了很多漏洞),现在使用fastjson至少升级到1.2.60版本

使用fastjson

在项目中导入fastjson的jar

fastjson的使用主要是三个对象:

  • JSON

  • JSONObject

  • JSONArray

JSONArray和JSONObject继承JSON

1. JSON对象

JSON这个类主要用于转换

  • 将Java对象序列化为JSON字符串

  • 将JSON字符串反序列化为Java对象

    T parseObject(String text, Class<T> clazz)  //把json转换为一个java对象
    JSONObject parseObject(String text)    // 把json转换为一个JSONObject对象
    List<T> parseArray(String text, Class<T> clazz)  //把json转换为一个List集合
    JSONArray parseArray(String text)     //把json转换为一个JSONArray对象
    String toJSONString(Object object) //把一个java对象转换为json格式的字符串 

2. JSONObject

JSON对象(JSONObject)中的数据都是以key-value形式出现,所以它实现了Map接口:

使用起来也很简单,跟使用Map就没多大的区别(因为它底层实际上就是操作Map),常用的方法:

3.  JSONArray

JSONArray则是JSON数组,JSON数组对象中存储的是一个个JSON对象,所以类中的方法主要用于直接操作JSON对象

六、Js解析服务器发送过来的JSON字符串

1. 服务器发送过来JSON字符串后,客户端需要对其进行解析。这时客户端需要使用eval()方法对JSON字符串进行执行!但要注意,eval()方法在执行JSON时,必须把JSON字符串使用一对圆括号括起来。

var json = "{\"name\":\"zhangSan\", \"age\":\"18\", \"sex\":\"male\"}";
var person = eval("(" + json + ")");
alert(person.name + ", " + person.age + ", " + person.sex);

2. 我们也可以使用JQuery的parseJSON()函数来对json字符串进行解析:

var json = "{\"name\":\"zhangSan\", \"age\":\"18\", \"sex\":\"male\"}";
var obj = $.parseJSON(json);
alert(person.name + ", " + person.age + ", " + person.sex);

七、$.getJSON()

在JQuery中除了可以将定义好的对象进行输出以外,还可以发送JSON格式的数据到服务器,或者接收从服务器返回的JSON格式数据.这时通常需要使用JQuery提供的$.getJSON()方法,异步发送请求到服务器,并以JSON格式封装客户端与服务器之间传递的数据,具体语法如下:

$.getJSON(url,data,success(result,status,xhr));

 

相关文章:

AJAX——JSON

目录 一、JSON概述 二、JSON对象语法 三、JSON序列化方法 四、JSON与XML比较 五、Java对象与Json对象的转换 六、Js解析服务器发送过来的JSON字符串 七、$.getJSON() 一、JSON概述 JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法)&#xff0c;…...

Nexus3 Docker 私有仓库

Nexus3 Docker 私有仓库 安装并部署 Nexus3 $ docker search nexus3$ docker pull sonatype/nexus3$ mkdir /home/tester/data/docker/nexus3/sonatype-work $ sudo chown -R 200 /home/tester/data/docker/nexus3/sonatype-work$ docker run -d --namenexus3 \ --restartalw…...

Element UI el-dialog自由拖动功能

1.创建drag .js文件 /*** 拖拽移动* param {elementObjct} bar 鼠标点击控制拖拽的元素* param {elementObjct} target 移动的元素* param {function} callback 移动后的回调*/ export function startDrag(bar, target, callback) {var params {top: 0,left: 0,currentX: …...

RPC浅析,加密数据解析

个人总结 其实就是HOOK注入wbsocket 链接创建服务端和客户端进行通信&#xff0c;直接调用js代码中的加密方法 将结果通过浏览器客户端传入服务端。一种比较好实用的一种技术 https://blog.csdn.net/qq_36759224/article/details/123082574 &#xff08;搬运记录下&#xff…...

光速论文能用吗 #媒体#知识分享#学习方法

光速论文是一个非常有效的论文写作、查重降重工具&#xff0c;它的使用非常简单方便&#xff0c;而且功能强大&#xff0c;是每个写作者必备的利器。 首先&#xff0c;光速论文具有强大的查重降重功能&#xff0c;能够快速检测论文中的抄袭部分&#xff0c;帮助作者避免不必要的…...

智慧工地解决方案,智慧工地项目管理系统源码,支持大屏端、PC端、手机端、平板端

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最线实现项目对人、机、料、法、环的全…...

【前端寻宝之路】学习和使用label标签

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-2nm9oQQVtSL8hDS1 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…...

项目————网络聊天室

服务器 #include <myhead.h> typedef struct msg{char flag;char name[20];char cont[128]; }msg_t;typedef struct link{struct sockaddr_in cin;struct link* next; }link_t;void do_login(int sfd,msg_t msg,link_t *L,struct sockaddr_in cin){link_t* pL;if(sendto…...

【计算机网络】基本概念

基本概念 IP 地址端口号协议协议分层封装分用客户端服务器请求和响应两台主机之间的网络通信流程 IP 地址 概念&#xff1a;IP 地址主要是用于唯一标识网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址。简单来说&#xff0c;IP地址用来唯一定位主机。格式&…...

Redis入门到实战-第七弹

Redis实战热身Sets篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理和流…...

图像处理学习笔记(一)

本文主要介绍&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;ISP处理 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就…...

duckdb学习-1

DuckDB is a fast in-process analytical database DuckDB supports a feature-rich SQL dialect complemented with deep integrations into client APIs 在notebook中使用duckdb 安装 pip install duckdb 示例代码: #> pip install jupysql #> pip install duckdb-en…...

GEE高阶案例——Landsat/Sentinel/MODIS影像进行缨帽变换一行代码实现

本教程的主要目的是利用eemont中的tasseledCap()的函数进行缨帽变换实现。 在 eemont 中,可使用扩展到 ee.Image 和 ee.ImageCollection 对象的 tasseledCap 方法计算缨帽亮度、绿度和湿度组件。只需从支持的平台加载图像,然后使用 tasseledCap 添加分量带即可。 代码: !p…...

数独游戏(c++题解)

题目描述 给出一个的表格&#xff0c;部分格子已经填好数。请填完所有空白格子&#xff0c;使得表格每一行、每一列、每个的九宫格&#xff0c;都恰好填满这9个数字。 输入格式 9行9列的方阵状态&#xff0c;0代表空格。 输出格式 输出完成后的方阵状态&#xff0c;每一个…...

【开发方案】Android 应用双卡搜网功能

一、功能简介 需求:开机自动开始搜网并显示网络列表 那么就不能将相关类做成单例,不能将subId、phoneId等卡相关的属性作为UI、服务的全局变量。 二、流程设计 NetworkSelectReceiver:监听开机广播,触发拉起搜网服务 NetworkOperatorService:搜网服务,完成后调起用户…...

图论基础|深度优先dfs、广度优先bfs

dfs 与 bfs 区别 提到深度优先搜索&#xff08;dfs&#xff09;&#xff0c;就不得不说和广度优先搜索&#xff08;bfs&#xff09;有什么区别 先来了解dfs的过程&#xff0c;很多录友可能对dfs&#xff08;深度优先搜索&#xff09;&#xff0c;bfs&#xff08;广度优先搜索…...

Python从入门到精通秘籍十七

一、Python的构造方法 在Python中&#xff0c;构造方法是一个特殊的方法&#xff0c;用于创建和初始化类的实例。构造方法的名称是__init__()&#xff0c;它在创建对象时自动调用。 下面是一个示例代码来详细解释Python的构造方法&#xff1a; class Person:def __init__(se…...

Java——抽象类和接口

目录 1.抽象类 1.概念: 2.语法 3.特性 2.接口 1.概念 2.语法 3.特性 1.抽象类 1.概念: 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的…...

React—— props校验(非typescript校验类型)

非typescript环境下&#xff0c;当我们在封装组件的时候&#xff0c;接受props时传入的内容&#xff0c;需要做类型检测&#xff0c;那我们可以用props校验进行类型的检查。 props校验允许在创建组件的时候&#xff0c;就约定props的格式、类型等 实现步骤&#xff1a; 导入 …...

Go——map操作及原理

一.map介绍和使用 map是一种无序的基于key-value的数据结构&#xff0c;Go语言的map是引用类型&#xff0c;必须初始化才可以使用。 1. 定义 Go语言中&#xff0c;map类型语法如下&#xff1a; map[KeyType]ValueType KeyType表示键类型ValueType表示值类型 map类型的变量默认…...

ThinkPad开机嘀嘀响或报2100/2110错误?可能是硬盘松了!自己动手检测与修复指南

ThinkPad开机嘀嘀响或报2100/2110错误&#xff1f;三步排查硬盘接触不良问题ThinkPad用户对那个标志性的开机"嘀嘀"声再熟悉不过——正常情况下它意味着系统自检通过。但当这个声音变成急促的报警音&#xff0c;伴随屏幕上出现"2100 Detection error"或&qu…...

Blender渲染通道完全指南:如何像电影后期一样,分离出深度、阴影与反射图

Blender渲染通道完全指南&#xff1a;影视级后期制作的深度解析在数字内容创作领域&#xff0c;Blender已经从一个简单的3D建模工具成长为能够处理复杂视觉特效的全流程解决方案。对于追求影视级质量的中高级用户而言&#xff0c;掌握渲染通道技术是提升作品专业度的关键一步。…...

HFSS仿真结果怎么看?以T型波导为例,读懂S参数与电场动态图

HFSS仿真结果深度解析&#xff1a;从S参数到电场动态图的实战指南当你第一次在HFSS中完成T型波导仿真后&#xff0c;面对满屏的曲线和彩色云图&#xff0c;是否感到既兴奋又困惑&#xff1f;那些起伏的S参数曲线究竟告诉你什么信息&#xff1f;电场图中跳跃的颜色又代表怎样的物…...

2026上半年数据库系统工程师(软考)上午题回忆与解析(非标答版)

本文为考后回忆整理&#xff0c;非官方标准答案&#xff0c;旨在为考后对答案及下半年备考的同学提供参考。题目顺序和表述可能与原卷有出入&#xff0c;欢迎在评论区指正、补充。&#x1f4ca; 整体考情分析 刚结束的2026年上半年数据库系统工程师考试&#xff0c;上午题的风格…...

基于ATmega2560与ISD1700的智能语音时钟:硬件选型、软件架构与避坑指南

1. 项目概述与核心价值去年折腾那个用ATMega328驱动三块显示屏的时钟时&#xff0c;我主要精力都花在了如何在320x240的TFT屏幕上把时间、日期和图标画得又准又好看上。项目在《Elektor》杂志上发表后&#xff0c;一位热心的读者给我提了个新想法&#xff1a;能不能做个会“说话…...

如何快速批量下载高质量歌词:ZonyLrcToolsX跨平台终极解决方案

如何快速批量下载高质量歌词&#xff1a;ZonyLrcToolsX跨平台终极解决方案 【免费下载链接】ZonyLrcToolsX ZonyLrcToolsX 是一个能够方便地下载歌词的小软件。 项目地址: https://gitcode.com/gh_mirrors/zo/ZonyLrcToolsX 还在为本地音乐库缺少歌词而烦恼吗&#xff1…...

第三卷第4章:原型模式设计思想

第三卷第4章:原型模式设计思想 目录介绍 01.案例引入与思考 1.1 痛点场景 1.2 它哪里不舒服 1.3 引出本篇主角 02.原型模式介绍 2.1 原型模式由来 2.2 原型模式定义...

厨房空调技术白皮书:从风冷到水冷,制冷系统在厨房场景中的工程化演进

厨房空调是暖通行业近三年技术迭代最密集的细分品类。从最初的"凉霸"&#xff08;本质是风扇&#xff09;&#xff0c;到风冷分体式&#xff0c;再到水冷一体式&#xff0c;每代技术都在解决上一代没有覆盖的用户痛点。本文以工程技术视角&#xff0c;梳理四代厨房制…...

具身智能:面向新兴交叉学科建设的思考与建议 2026

这份由 CCF YOCSEF 长三角五地学术委员会 2026 年 5 月发布的白皮书&#xff0c;聚焦具身智能作为新兴交叉学科的建设&#xff0c;明确其并非 AI 与机器人学的简单拼接&#xff0c;而是围绕物理交互中的智能行为形成的新问题域&#xff0c;提出 “三大基本问题 一个应用需求”…...

打造XBEE封装BLE112蓝牙模块:硬件设计、射频布局与调试全攻略

1. 项目概述&#xff1a;为什么我们需要一个“XBEE格式”的蓝牙模块&#xff1f;在嵌入式开发和物联网项目中&#xff0c;无线通信模块的选择往往决定了项目的成败。对于很多工程师和创客来说&#xff0c;Silicon Labs&#xff08;芯科科技&#xff09;的BLE112/113模块是蓝牙4…...