JSON在Java中的应用:

Json概念:

  1. json 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式用来存储和表示数据。JSON的语言简洁清晰,广为大众所欢迎,是一种理想的数据交换语言,便于人们阅读和理解,同时也易于机器解析和生成。能够有效的提高网络传输速率 。

  2. 语法:

JSON只定义了两种数据结构,即数组对象。对象是一组键值对。(key — value 或 name — value ) 。数组是值的列表。JSON 共有7 种类型,分别是:

字符串、数字、对象、数组、 true 、 false 、 null 。下面简单介绍JSON数据对象的基本格式:

{
"firstName": "Duke",
"lastName": "Java",
"age": 18,
"streetAddress": "100 Internet Dr",
"city": "JavaTown",
"state": "JA",
"postalCode": "12345",
"phoneNumbers": [
{ "Mobile": "111-111-1111" },
{ "Home": "222-222-2222" }
]

3 :JSON经常被用作进行序列化反序列化数据的应用中彼此通信的网络。

4 :   如何解析和生成JSON数据,有两种编程模型:

首先:

(1): 该对象模型创建的树 , 它表示存储器在 JSON 数据。然后可以在树中导航、分析或修改。该方法是最灵活的处理和用于允许访问该内容的完整的树。然而 , 通常慢于流模型 , 需要更多存储器。在生成 JSON 对象模型输出的导航整个树。

(2) 在流式模型采用基于事件的解析器读取 JSON 数据的每一个元素。该解析器产生事件或者停止进程当一个对象或者一个数组开始或者结束的时候, 当找到了键值对的键,或者找到了键值对的值时。每个数据元素都可以被应用代码加工或者丢弃 , 然后解析器和继续处理到下一事件。用这种方法就可以进行本地处理 , 其中处理元件的不需要的信息的数据。在流式模型生成 JSON 输出到给定流的功能调用的一个元素。

JSON 在java 中的接口和类:

  1. javax.json包中: 以下是相关的对json进行数据处理的相关的包。
Json
包含用于创建 JSON 解析器、构建器和生成器的实例的静态方法。此类还包含创建解析器、生成器和生成器工厂对象的方法。

JsonReader
从流中读取 JSON 数据, 并在内存中创建对象模型。

JsonObjectBuilder, JsonArrayBuilder
通过添加应用程序代码中的元素, 在内存中创建对象模型或数组模型。 JsonWriter
将对象模型从内存写入流。

JsonValue
表示 JSON 数据中的元素 (如对象、数组或值)。 JsonStructure
表示 JSON 数据中的对象或数组。此接口是JsonValue子类型. JsonObject, JsonArray 表示 JSON 数据中的对象或数组。这两个接口是JsonStructure的子类型. JsonPointer
包含在 JSON 文档中对特定目标进行操作的方法。目标可以是JsonValue、 JsonObject JsonArray对象。 JsonPatch
用于支持要应用于目标 JSON 资源的一系列操作的接口。这些操作是在 JSON 修补程序文档中定义的。 JsonMergePatch
用于支持针对 JSON 资源的更新的接口。将 JSON 修补程序文档与目标资源进行比较, 以确定要应用的特定更改操作集。 JsonString, JsonNumber
表示 JSON 数据中元素的数据类型。这两个接口是JsonValue的子类型. JsonException
Json数据出现异常的类

2 在java.json.stream中的主要类和接口:

JsonParser       表示基于事件的解析器, 该解析器可以从流或对象模型读取 JSON 数据。

JsonGenerator      一次将 JSON 数据写入流一个元素。

XML语言概述以及与JSON语言的不同(各自优缺点):

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

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

xml:

(1).XML的优缺点
XML的优点
  格式统一,符合标准;
  容易与其他系统进行远程交互,数据共享比较方便。
XML的缺点
  XML文件庞大,文件格式复杂,传输占带宽;
  服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
  客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
  服务器端和客户端解析XML花费较多的资源和时间。

json:

在可扩展性方面,XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

在编码难度方面,XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

在解码难度方面,XML的解析得考虑子节点父节点,而JSON的解析难度几乎为0。json比xm更有优势

在流行度方面,XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。

JSON和XML同样拥有丰富的解析手段。

JSON相对于XML来讲,数据的体积小。

JSON与JavaScript的交互更加方便。

JSON对数据的描述性比XML较差。

JSON的速度要远远快于XML。

JSON,XML设计模式详解的更多相关文章

  1. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

  2. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  3. Java web.xml 配置详解

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  4. java web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  5. web.xml文件详解

      web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...

  6. Javascript设计模式详解

    Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...

  7. sqlMapConfig.xml配置文件详解

    sqlMapConfig.xml配置文件详解: Xml代码 Xml代码  <? xml version="1.0" encoding="UTF-8" ?& ...

  8. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

  9. java web.xml配置详解(转)

    源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...

随机推荐

  1. Linux下MySQL多实例部署记录

    什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的socket监听不同的服务端 ...

  2. 【笔记】衡量线性回归法的指标 MSE,RMS,MAE以及评价回归算法 R Square

    衡量线性回归法的指标 MSE,RMS,MAE以及评价回归算法 R Square 衡量线性回归法的指标 对于分类问题来说,我们将原始数据分成了训练数据集和测试数据集两部分,我们使用训练数据集得到模型以后 ...

  3. JVM钩子函数的使用

    一.问题引入 背景 在编写一个需要持续在后台运行的程序的时候遇到了这样的场景:我的程序在主函数中创建了一个线程池周期性地执行任务,我希望主线程和线程池都持续运行,但如果收到外部的关闭信号时,主线程和线 ...

  4. STM32—串口使用总结

    文章目录 一.仅向上位机打印调试信息 二.与上位机交互信息 三.作为驱动接口 四.结合DMA接收数据帧 在日常学习中,串口经常作为和上位机通信的接口,进行打印信息方便调试程序,有时也会作为模块的驱动接 ...

  5. ☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!

    问题概括 静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定,所以Java针对某些情况制定了常量优化机制. 常量优化机制 给一个变量赋值,如果等于号的右边是常量的表达 ...

  6. Django 模版语法 测试环境 ORM单表查询

    模版语法 传值 视图函数向前端html页面传值,基本上所有的数据类型都可以渲染在前端页面上. views.py from django.shortcuts import render, redirec ...

  7. NOIP 模拟 $19\; \rm v$

    题解 一道概率与期望的状压题目 这种最优性的题目,我们一般都是倒着转移,因为它的选择是随机的所以我们无法判断从左还是从右更有,所以我们都搜一遍 时间一定会爆,采用记忆化搜索,一种状态的答案一定是固定的 ...

  8. 微信小程序 简易搜索功能实现

    先看效果图 挺简单的一个实现方法,导入外部js数据,将数据通过radio-group展示出来,根据数据里的status属性判断显不显示该项. 在搜索框内实时读取输入的数据,去除空格后将数据跟js里的n ...

  9. 【软件工具】Git 使用总结

    本地库就是由 对象 和 引用 构成的,或者叫 Repositories;下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 ...

  10. Ubuntu18.04忘记root密码,重置root密码

    输入命令,更新root密码: sudo passwd root 然后输入新密码,再输入一次确认新密码,新密码更新完毕! 切换root账号: su 如下图所示,发现已经由zyw账号切换到root账号了!