JSON/xml

JSON是什么:

  JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  2.JSON语法

  在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

  3.常用类型

  在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

  对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

  数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

Java EE平台中的JSON  processing

  • 使用对象模型API

  对象模型API的四个用例:从JSON数据创建对象模型,从应用程序代码创建对象模型,导航对象模型以及将对象模型编写到流中:从JSON数据创建对象模型、从应用程序代码创建对象模型、导航对象模型、将对象模型写入流。

  • 使用Streaming API

       使用解析器读取JSON数据,流API是解析JSON文本的最有效方法;使用生成器编写JSON数据。

XML简介

  1.基本简介

  可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

 

在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。

  XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

  • 可扩展标记语言是一种很像超文本标记语言的标记语言。
  • 它的设计宗旨是传输数据,而不是显示数据。
  • 它的标签没有被预定义。您需要自行定义标签。
  • 它被设计为具有自我描述性。
  • 它是W3C的推荐标准。

  2.格式特性

  它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,它仅仅是存储数据。事实上它与其他数据表现形式最大的不同是:它极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同。它和超文本标记语言语法区别:超文本标记语言的标记不是所有的都需要成对出现,它则要求所有的标记必须成对出现;HTML标记不区分大小写,它则大小敏感,即区分大小写。

什么是XML:

   扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。

  

  • XML管道

  XML管道是参与每个步骤的规范的XML处理器。如何以及何时在XML处理器中进行规范(由Unicode,IETF,W3C或其他组织定义)。

  • 数据模型

  基于已定义的子集规范:Unicode 3.1.0,RFC 2396,XML 1.0,命名空间,XML Base,XInclude,XML Schema和XLink / XPointer?或者仍然继续我们当前的方法(<7!),即每个XML应用程序定义自己的集合?当然,答案并不容易,但希望Infoset将减少XML管道中涉及的规范数量:Infoset,XInclude,XML Schema,XLink / XPointer(<4!)。PSV Infoset减少了这个数字:PSVI,XInclude,XLink / XPointer。

  这导致我们采用通用数据模型。由于历史原因,在W3C中开发了几个数据模型:DOM,XPath 1.0,Infoset,PSV Infoset,XML Query等。它们中的每一个都是向前一个添加/删除信息。例如,最近的XQuery 1.0和XPath 2.0数据模型正在PSV Infoset之上添加参考节点信息项。

  DOM数据模型添加了更多信息,例如CDATA部分或实体引用。由于向后兼容性原因,更改DOM数据模型会很困难,但是,使用加载和保存模型,DOM能够在不破坏向后兼容性的情况下满足Infoset的要求。我们还能够使用抽象模式/ PSVI对象模型来表示PSV信息集。恕我直言,应该针对PSVI定义每个新的XML应用程序,包括XInclude。

JSON和XML的比较

  • 可读性

XML有明显的优势,毕竟人类的语言更贴近这样的说明结构

  • 可扩展性

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,而JSON却不能。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。

  • 编码难度

XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。

  • 解码难度

    XML的解析方式有两种:一是通过文档模型解析,也就是通过父标签索引出一组标记;另外一种方法是遍历节点。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。

XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。


 

转载于:https://www.cnblogs.com/dashuaiB/p/10725627.html

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

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

相关文章

unity开宝箱动画_[技术博客]Unity3d 动画控制

在制作游戏时&#xff0c;导入的箱子模型本身自带动画。然而&#xff0c;它的动画是一个从打开到关闭的完整过程&#xff0c;并且没有给出控制打开关闭的方法。最直接的想法是对该动画进行拆分&#xff0c;再封装成不同的动画状态&#xff0c;但是不巧的是&#xff0c;这个动画…

php上传大文件时,服务器端php.ini文件中需要额外修改的选项

几个修改点&#xff1a; 1、upload_max_filesize 上传的最大文件 2、post_max_size 上传的最大文件 3、max_execution_time 修改为0表示无超时&#xff0c;一直等待 4、max_input_time 参考网址&#xff1a; 在php.ini中把max_input_time 和 max_execution_time设置得特别长…

《中国人工智能学会通讯》——11.21 结束语

11.21 结束语 本文针对交通流的网络性、异质性和动态性特点&#xff0c;结合当前多任务学习方法的不足提出了相应的解决方案。然而&#xff0c;在实际的应用场景中还存在更多的挑战&#xff0c;需要进一步深入的研究方向包括&#xff1a;① 高维任务的共同学习方法。在高维数据…

如何把一个软件嵌入另一个软件_自动化正在成为一个“软件”行业

摘要在智能制造时代&#xff0c;自动化行业正在成为一个软件行业&#xff0c;它正在改变着整个产业的未来&#xff0c;也将为制造业带来更为广阔的空间。自动化正在成为一个“软件”行业&#xff0c;在智能时代&#xff0c;软件正在成为自动化行业竞争的关键。自动化已然成为软…

leetcode1020. 飞地的数量(dfs)

给出一个二维数组 A&#xff0c;每个单元格为 0&#xff08;代表海&#xff09;或 1&#xff08;代表陆地&#xff09;。 移动是指在陆地上从一个地方走到另一个地方&#xff08;朝四个方向之一&#xff09;或离开网格的边界。 返回网格中无法在任意次数的移动中离开网格边界…

未来编程语言的走向_在编程方面我从失败走向成功的过程以及让我成功的原因

未来编程语言的走向In the past 10 years, I’ve had three separate experiences trying to learn programming. I’ve wondered why I’ve had such different results. What had caused me to both fail and succeed?在过去的10年中&#xff0c;我有3种不同的尝试学习编程的…

《中国人工智能学会通讯》——5.16 结 论

5.16 结 论 在过去的 30 年中&#xff0c;移动操作机器人在机器人实验室受到了广泛的关注并获得了比较充分的研究。未来随着工业领域的自动化需求&#xff0c;移动操作机器人将会深入到生产的各个环节。目前&#xff0c;几乎所有的移动操作机器人都没有在实际环境中获得广泛及充…

【转载 | 笔记】IIS无法删除应该程序池 因为它包含X个应用程序

IIS无法删除应该程序池 因为它包含X个应用程序 今天代码主分支在vs2015创建了虚拟目录http://localhost/webapp指向的物理路径是E:\webapp 之后新开了一个分支把代码放在了D:\webapp之后又在vs2015中创建了虚拟目录 http://localhost/webapp/home 这下就杯具了。在主分支调试的…

python作中国地图背景气泡图_exce表格中怎么制作中国地图背景数据气泡图

exce表格中怎么制作中国地图背景数据气泡图exce表格中怎么制作中国地图背景数据气泡图?excel表格中想要在中国地图上显示气泡来看看地区分布情况&#xff0c;该怎么设置中国地图气泡图表呢?下面我们就来看看详细的教程&#xff0c;需要的朋友可以参考下1、如图1所示&#xff…

leetcode979. 在二叉树中分配硬币(dfs)

给定一个有 N 个结点的二叉树的根结点 root&#xff0c;树中的每个结点上都对应有 node.val 枚硬币&#xff0c;并且总共有 N 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&#xff0c;然后将一枚硬币从其中一个结点移动到另一个结点。(移动可以是从父结点到…

python怎么显示求余的除数_Python算术运算符及用法详解

算术运算符也即数学运算符&#xff0c;用来对数字进行数学运算&#xff0c;比如加减乘除。下表列出了 Python 支持所有基本算术运算符。表 1 Python 常用算术运算符运算符说明实例结果加12.45 1527.45-减4.56 - 0.264.3*乘5 * 3.618.0/除法(和数学中的规则一样)7 / 23.5//整除…

任务完成:我从CNC2018 GetAJob挑战中学到的东西

什么是CNC2018&#xff1f; (What is CNC2018?) CNC2018 stands for the CodeNewbie Challenge of 2018 put on by CodeNewbie. If you haven’t heard of CodeNewbie, it’s a community and podcast run by Saron Yitbarek. They also host live Twitter Chats on Sundays a…

HTML td 标签的 colspan 属性

表格单元横跨两列的表格&#xff1a; <table border"1"><tr><th>Month</th><th>Savings</th></tr><tr><td colspan"2">January</td></tr><tr><td colspan"2">Fe…

Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)

作者&#xff1a;Antonio Leiva 时间&#xff1a;Jan 5, 2017 原文链接&#xff1a;https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式函数&#xff0c;所以它是Kotlin和任何其他现代开发语言的最强工具之一。 在Java6中&#xff0c;我们仅能下…

Pyhon进阶9---类的继承

类的继承 基本概念 定义 格式如下 继承中的访问控制 class Animal:__CNOUT 0HEIGHT 0def __init__(self,age,weight,height):self.__CNOUT self.__CNOUT 1self.age ageself.__weight weightself.HEIGHT heightdef eat(self):print({} eat.format(self.__class__.__name__…

python怎么备份列表_python实例:backup 备份

python实例&#xff1a;backup 备份本文来源于《python简明教程》中的实例1. 提出问题&#xff1a; 我想要一个可以为我的所有重要文件创建备份的程序。2. 分析明确问题&#xff1a;我们如何确定该备份哪些文件&#xff1f;备份保存在哪里&#xff1f;我们怎么样存储备份&#…

leetcode1466. 重新规划路线(dfs)

n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c;以改变交通拥堵的状况。 路…

mysql数学函数名_Mysql数学函数

所有的数学函数在发生错误的情况下&#xff0c;均返回 NULL。-一元减。改变参数的符号&#xff1a;mysql> SELECT - 2;-> -2注意&#xff0c;如果这个操作符被用于一个 BIGINT&#xff0c;返回值也是一个 BIGINT&#xff01;这就意味着&#xff0c;应该避免在一个可能有值…

angular 渐进_如何创建具有Angular和无头CMS的渐进式Web应用程序

angular 渐进by Ondrej Chrastina通过Ondrej Chrastina 如何创建具有Angular和无头CMS的渐进式Web应用程序 (How to create a progressive web app featuring Angular and headless CMS) Have you ever wondered how a headless Content Management System fits in with Progr…

win10不用第三方工具激活的方法

步骤&#xff1a;1、本机上装个win7旗舰版&#xff0c;这个得拿第三方工具激活一下&#xff0c;当然你如果已经购买了正版更没问题了。第三方工具推荐那个啥啥loader&#xff0c;记住&#xff1a;chew_wga系列的暴力工具是不行的哦&#xff1b;2、把需要安装的win10官方安装镜像…