数据交换的常见格式,如JSON格式和XML格式

JSON

数据交换的格式

JSON的全称是JavaScript Object Notation(JavaScript标记对象), JSON的体积小是一种轻量级的数据交换格式

JSONXML都是非常标准的数据交换格式

  • XML是一种国际上通用的数据交换格式, 体积大解析难度大并且语法严格(一般和钱有关系的,严谨的系统都会采用XML进行数据交换)
  • JSON是一种轻量级的数据交换格式, 体积小解析更容易并且语法相对松散

数据交换是指不同语言之间交换数据,

  • 如C语言查询数据库之后,拼接了一个XML格式的字符串然后通过网络的方式传输,Java语言接收到这个字符串之后开始解析获取数据完成数据的交换
<?xml version="1.0" encoding="gbk"?>
<students><student><name>zhangsan</name><age>20</age></student><student><name>lisi</name><age>21</age></student><student><name>wangwu</name><age>22</age></student>
</students>

JSON对象的格式

在JavaScript当中,JSON是一种无类型的对象,用{}包起来就是一个JSON对象,[]包起来的是数组对象

  • JSON对象的属性名: 必须用引号括起来
  • JSON对象的属性值: 可以是任意类型甚至可以是JSON对象,属性值是字符串类型需要用双引号括起来
var jsonObj = {"属性名" : 属性值,"属性名" : 属性值,....
}

访问JSON对象的属性,直接通过对象点.属性名方式或者对象["属性名"]的方式

var person = {// 属性名是一个字符串"name" : "zhangsan",// 属性值是一个boolean类型"sex" : false,// 属性值是一个数组"aihao" : ["抽烟","喝酒","烫头"]
}
console.log(person.name)
console.log(person["sex"] ? "男" : "女"),
var aihaos = person.aihao;
for(var i = 0; i < aihaos.length; i++){console.log(aihaos[i])
}
// JSON对象的属性值可以是JSON对象
var user = {"username" : "zhangsan","password" : "123","email" : "zhangsan@123.com",// 属性值是一个json对象"address" : {"city" : "深圳","street" : "宝安"}
}// 访问zhangsan居住的城市
console.log(user.username + "居住在" + user.address.city)

设计一个JSON格式的数据可以表示全班人数和每个学生信息

// 属性值是字符串类型需要用双引号括起来
var students = {"total" : 3,// 属性值是个数组,数组中的每个元素是一个JSON对象"data" : [{"name":"陈赓", "age":20},{"name":"吴雨阳","age":21},{"name":"殷远庭", "age":23}]
};// JSON很容易解析,一顿"点"就行
console.log(students.data[0].name)// 访问以上的json对象,将总人数取出,将每个学生的信息取出
console.log("总人数:" + students.total)// 访问每一个学生数据
var arr = students.data;
for(var i = 0; i < arr.length; i++){var s = arr[i];console.log("姓名:" + s.name + ",年龄:" + s.age)
}

Java和JavaScript数据交换

Java和JavaScript之间可以使用JSON格式的字符串完成数据的交换

  • 在Java中使用JDBC连接数据库查询数据,然后将查询到的数据拼接成JSON格式的字符串,将JSON格式的字符串通过网络传输传给Javascript
  • 在Javascript中把接收的JSON格式的字符串转换成JSON对象,这样就可以从JSON对象中取出对象的属性实现数据的交换
// eval函数的作用是将后面的字符串当做一段JS代码解释并执行
window.eval("var i = 0")
alert(i)// 双引号当中的是Java传给我们浏览器的一个字符串不是Json对象,使用\进行转义
var fromJavaJSON = "{\"name\":\"zhangsan\", \"age\":20}";  // 将Json格式的字符串转换成Json对象
window.eval("var stu = " + fromJavaJSON) // 上面代码执行结束之后,等同于执行以下代码创建了一个Json对象
var stu = {"name" : "zhangsan","age" : 20
}; // 转换成Json对象的目的是为了取数据(这样Javascript和Java之间两个不同的编程语言就完成了数据的交换)
console.log(stu.name + "," + stu.age)

需求: 接收Java传过来一个的JSON格式的字符串,通过拼接html的方式设置table中tbody的内容

<input type="button" value="查看学生信息列表" id="displaybtn" />
<!--展示解析出来的数据-->
<table border="1px" width="40%"><tr><th>序号</th><th>学生姓名</th><th>学生年龄</th></tr><tbody id="stutbody"><!--展示数据库中的数据--></tbody>
</table>
总记录条数:<span id="totalSpan">0</span><script type="text/javascript">// json格式的字符串var fromJava = "{\"total\" : 2, \"students\" : [{\"name\":\"李四\",\"age\":19},{\"name\":\"王五\",\"age\":18}]}";window.onload = function(){document.getElementById("displaybtn").onclick = function(){// 将json格式的字符串转化json对象, 将json对象中的数据放到tbody当中window.eval("var json = " + fromJava) // 设置总记录条数document.getElementById("totalSpan").innerHTML = json.total;// 拿到学生数组,拼接HTMLvar studentArray = json.students;var html = "";for(var i = 0; i < studentArray.length; i++){var s = studentArray[i]html += "<tr>";html += "<td>"+(i+1)+"</td>";html += "<td>"+s.name+"</td>";html += "<td>"+s.age+"</td>";html += "</tr>";}// 将以上拼接的HTML设置到tbody当中document.getElementById("stutbody").innerHTML = html;}
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/96664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物流仓储RFID系统设计案例分享

一、项目背景 为了实现仓储货物管理数字化转型的目标&#xff0c;提升仓储业务自动化和数字化水平&#xff0c;在满足仓储日常需求的基础上&#xff0c;验证物联网和人工智能相关技术能力&#xff0c;为仓储业务的柔性自动化、快速部署和复制提供储备能力。 项目设计目标包括…

2023/9/28 -- ARM

【内存读写指令】 int *p0X12345678 *p100;//向内存中写入数据 int a *p;//从内存读取 1.单寄存器内存读写指令 1.1 指令码以及功能 向内存中写&#xff1a; str:向内存中写一个字(4字节)的数据 strh:向内存写半个字&#xff08;2字节&#xff09;的数据 strb:向内存写一个字…

关于crypto1_bs

代码地址 GitHub - aczid/crypto1_bs: Bitsliced Crypto-1 brute-forcer Bitsliced Crypto-1 暴力破解器 使用位切片方法的 Crypto-1 密码的纯 C(99) 实现&#xff0c;它使用 GNU 向量扩展来跨 SSE/AVX/AVX2 支持架构移植&#xff0c;同时提供尽可能高的并行性。 背景 我写这篇…

asp.net core 如何统一json序列化格式

oldconfig.AllFields Newtonsoft.Json.JsonConvert.SerializeObject(sqlParameters.AllFields);在start.cs文件中 JsonConvert.DefaultSettings new Func<JsonSerializerSettings>(() >{JsonSerializerSettings jsonsetting new JsonSerializerSettings(){Formatt…

布隆过滤器及其用法

1 定义 布隆过滤器(Bloom Filter, BF)是由Howrad Bloom在1970年提出的一种具有高效时间和空间效率的二进制向量数据结构&#xff0c;用来检测一个元素是不是属于这个集合。注意&#xff0c;布隆过滤器只判断是否出现在集合中&#xff0c;无法给出元素在集合中的具体位置。 1.1…

HubSpot成功全靠它?集客营销大揭秘

在当今数字化的商业世界中&#xff0c;吸引、转化和维护客户已经变得更具挑战性和复杂性。然而&#xff0c;有一家公司已经成功地帮助数千家企业实现了集客营销的成功。这家公司就是HubSpot。那么&#xff0c;HubSpot的成功到底全靠了什么&#xff1f;让我们揭开集客营销的大秘…

openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制

文章目录 openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制92.1 不支持的特性92.2 MOT限制92.3 不支持的DDL操作92.4 不支持的数据类型92.5 不支持的索引DDL和索引92.6 不支持的DML92.7 不支持的JIT功能&#xff08;…

3D孪生场景搭建:3D漫游

上一篇 文章介绍了如何使用 NSDT 编辑器 制作模拟仿真应用场景&#xff0c;今天这篇文章将介绍如何使用NSDT 编辑器 设置3D漫游。 1、什么是3D漫游 3D漫游是指基于3D技术&#xff0c;将用户带入一个虚拟的三维环境中&#xff0c;通过交互式的手段&#xff0c;让用户可以自由地…

前端作业(17)

之后的20个作业&#xff0c;学自【20个JavaScript经典案例-哔哩哔哩】 https://b23.tv/kVj1P5f 支付倒计时 1. 支付10s倒计时 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compat…

跨境必备!WhatsApp营销——注册、养号、防封号!

前面的文章&#xff0c;我们给大家介绍了WhatsApp营销的定义以及重要性&#xff0c;相信许多跨境小伙伴已经摩拳擦掌&#xff0c;迫不及待讲WhatsApp纳入您的全渠道营销策略。当然&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;拥有安全的WhatsApp号与登录环境会让…

【网络安全 --- kali2022安装】kali2022 超详细的安装教程(提供镜像)

如果你还没有安装vmware 虚拟机&#xff0c;请参考下面博客安装 【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;https://blog.csdn.net/m0…

【gcc】RtpTransportControllerSend学习笔记 3:gcc

本文是大神 https://www.cnblogs.com/ishen 的文章的学习笔记。大神的webrtc源码分析(8)-拥塞控制(上)-码率预估 详尽而具体,堪称神作。本文使用的代码是m79 ,与大神有不同。2.4 Probe只会在一些特殊的时候才会进行探测(链路刚开始时, 码率不正常暴跌时)2.5 : 对发送的吞吐量…

Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸

一、为什么要使用九宫格图像拉伸 相信做过前端的同学都知道&#xff0c;ui &#xff08;图片&#xff09;资源对包体大小和内存都有非常直接的影响。 通常ui 资源都是图片&#xff0c;也是最占资源量的资源类型&#xff0c;游戏中的ui 资源还是人机交互的最重要的部分&#xff…

解决 Jenkins 性能缓慢的问题~转

解决 Jenkins 性能缓慢的问题 Docker中文社区 ​​ 计算机技术与软件专业技术资格持证人 2 人赞同了该文章 没有什么比缓慢的持续集成系统更令人沮丧的了。它减慢了反馈循环并阻止代码快速投入生产。虽然像使用性能更好的服务器可以为您争取时间&#xff0c;但您最终必须投资…

UG\NX CAM二次开发 获取当前加工导航器选中的对象数量和tag UF_UI_ONT_ask_selected_nodes

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 获取当前加工导航器选中的对象数量和tag UF_UI_ONT_ask_selected_nodes 效果: 代码: void MyClass::do_it() {//获取当前加工导航器选中的对象数量和TAGint count = 0;tag_t* objects = NULL…

stm32 - 中断

stm32 - 中断 概念中断向量表NVIC 嵌套中断向量控制器优先级 中断EXTI概念基本结构例子- 对射式红外传感器计次例子 - 旋转编码器 概念 stm32 支持的中断资源&#xff08;都属于外设&#xff09; EXTITIMADCUSARtSPII2C stm32支持的中断 内核中断 外设中断 中断通道与优先级 一…

物联网AI MicroPython传感器学习 之 噪音测量传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 麦克风噪音测量传感器&#xff0c;通过单片机对信号的简单处理&#xff0c;可实环境音检测、声控开关这样的有趣实验。传感器模块仅占用一个IO口&#xff0c;通过电压强度&#xff08;mV&#…

IIS部署Flask

启用 CGI 安装wfastcgi pip install wfastcgi 启用 wfastcgi 首先以管理员身份运行wfastcgi-enable来在IIS上启用wfastcgi&#xff0c;这个命令位于c:\python_dir\scripts&#xff0c;也就是你需要确保此目录在系统的PATH里&#xff0c;或者你需要cd到这个目录后再执行。 #…

MVC架构和DDD架构的区别?

前言 最近在学习一个开源社区项目&#xff0c;第一次听说了DDD项目架构&#xff0c;于是通过搜索之后来分享给大家 正文 当涉及到软件架构时&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;和DDD&#xff08;Domain-Driven Design&#xff09;是两种常见的设…

cpp primer plus笔记07-内存模型和命名空间

对于相同变量名的变量&#xff0c;CPP会覆盖作用域大的变量&#xff0c;而使用作用域小的变量&#xff0c;如果想在函数体内使用全局的变量可以在变量名前加上::加以区分&#xff0c;比如warm3会使得局部的warm变量等于3&#xff0c;而::warm3会使得全局的warm3 。 存储描述持…