什么是数据交换格式:

主流的有Json、XML、HTML。

数据交换格式的应用场景:

移动端(安卓,IOS)通讯方式采用http协议+Json格式的restful风格。

很多互联网公司都是用Http协议+Json格式。

因为XML比较重WebService服务采用Http协议+XML格式的银行项目使用比较多。

什么是Json数据交换格式:

Json:相对于XML来说是一种轻量级数据交换格式。因为XML比较复杂,需要大量代码,所以客户端和服务器端数据交换通常使用Json来交换。

XML:是一种重量级的数据交换格式(标记语言)。

Json的基本语法:

{

"id": "小马",

"name": "男",

"itemts": [{

"ids": "小米",

"name": "没峨眉"

}, {

"id": "29",

"sex": "女"

}]

}

Java操作Json有哪些框架?

Gson(谷歌),fastjson(阿里巴巴)----主流,jackson(Springmvc)

第一种是直接使用Json中的方法进行解析:

首先新建一个maven工程,导入fastjson包。

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.47</version>

</dependency>

新建一个TestDemo:

public class TestDemo {

static String json="{\"id\": \"小马\",\"name\": \"男\",\"itemts\": [{\"id\": \"小米\",\"name\": \"没峨眉\"}, {\"id\": \"29\",\"name\": \"女\"}]}";

public static void main(String[] args) {

JSONObject jsonObject=new JSONObject().parseObject(json);

String id=jsonObject.getString("id");

String name=jsonObject.getString("name");

System.out.println(id+","+name);

JSONArray array=jsonObject.getJSONArray("itemts");

for(int i=0;i<array.size();i++) {

JSONObject object=array.getJSONObject(i);

String ids=object.getString("ids");

String names=object.getString("name");

System.out.println(ids+","+names);

}

}

}

以上这种方式太过麻烦,很少公司使用,一般使用对象封装好之后,直接拿来用。

首先新建一个User类。注意:User类里面的属性与Json中的对象一致

public class User {

private String id;

private String name;

private List<Itemts> itemts;

}

加上get跟set和toString方法

再新建一个Itemts类:

public class Itemts {

private String id;

private String name;

}

也是加上get、set、toString方法。

新建一个测试类

public class TestDemo {

static String json="{\"id\": \"小马\",\"name\": \"男\",\"itemts\": [{\"id\": \"小米\",\"name\": \"没峨眉\"}, {\"id\": \"29\",\"name\": \"女\"}]}";

public static void main(String[] args) {

//使用对象的方式解析json,使用的方便,广泛。

User user=new JSONObject().parseObject(json, User.class);

System.out.println(user.toString());

}

}

第二种是使用类的方式封装json,还是使用以上的User跟Itemts类。

public class TestDemo2 {

public static void main(String[] args) {

JSONObject root=new JSONObject();

root.put("id","10");

root.put("name", "小米");

JSONArray array=new JSONArray();

JSONObject object1=new JSONObject();

object1.put("itemts", "29");

object1.put("itemtsName", "小马");

JSONObject object2=new JSONObject();

object2.put("itemts", "38");

object2.put("itemtsName", "小红");

//把对象放进数组里面

array.add(object1);

array.add(object2);

//把数组放进对象里面

root.put("itemt", array);

System.out.println(root.toString());

}}

还有另一种实体类封装Json字符串

public class TestDemo2 {

public static void main(String[] args) {

//使用实体类封装json字符串

User user=new User();

user.setId("29");

user.setName("小马");

List<Itemts> list=new ArrayList<Itemts>();

Itemts itemts1=new Itemts();

itemts1.setId("28");

itemts1.setName("小红");

Itemts itemts2=new Itemts();

itemts2.setId("34");

itemts2.setName("小和");

list.add(itemts1);

list.add(itemts2);

user.setItemts(list);

System.out.println(user.toString());

}

}

Json到此就告一段落。

XML解析方式:

什么是XML?

XML全程是:可扩展的标记语言,主要用于描述数据和用作配置文件。

XML声明:指明所用XML的版本,文档的编码,文档的独立性信息。

文档类型声明:指出XML文档所用的DTD

元素:有开始标签,元素内容和结束标签构成。

注释:以结束,用于对文档中的内容起到一个解释的作用。

处理指令:通过处理指令来通知其他应用程序来处理非XML格式的数据,格式为XML文档的根元素被称为文档元素,它和在其外部出现的处理指令,注释等作为文档实体字节点,根元素本身与其内部的子元素也是一棵树。

XML样例:

<?xml version="1.0" encoding="UTF-8"?>

<students>

<student1 id="001">

<property>houe ary you</property>

</student1>

<student2 id="002">

<property>houe ary you2</property>

</student2>

</students>

XML解析方式?

Dom4j、Sax、Pull三种常用的。

Dom4j与Sax区别

dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。

使用Dom4j解析xml代码:

首先添加dom4j的jar包

<dependency>

<groupId>org.dom4j</groupId>

<artifactId>dom4j</artifactId>

<version>2.1.1</version>

</dependency>

Java代码

public class TestXML {

public static void main(String[] args) throws DocumentException {

SAXReader reader=new SAXReader();

//读取文件目录

Document read = reader.read("E:\\student.xml");

//得到文件根节点

Element rootElement = read.getRootElement();

getNods(rootElement);

}

static void getNods(Element rootElement) {

//得到根节点名称

String name = rootElement.getName();

System.out.println("根节点名称"+name);

//把子节点放进List集合里

List<org.dom4j.Attribute> attributes = rootElement.attributes();

for (org.dom4j.Attribute attribute : attributes) {

System.out.println("节点名称"+attribute.getName()+"节点属性"+attribute.getValue());

}

String value=rootElement.getTextTrim().trim();

if(!value.equals("")) {

System.out.println("节点的值是"+value);

}

//使用迭代器遍历子节点

Iterator<Element> elementIterator = rootElement.elementIterator();

while(elementIterator.hasNext()) {

Element next = (Element) elementIterator.next();

getNods(next);

}

}

}

结果是

数据交换格式Json与XML的更多相关文章

  1. 数据交换格式 —— JSON(JavaScript Object Notation)

    当请求 headers 中,添加一个name为 Accept,值为 application/json 的 header(也即"我"(浏览器)接收的是 json 格式的数据),这样, ...

  2. 数据交换格式 JSON

    1. 什么是 JSON 概念 : JSON 的英文全称是 JavaScript ObjEct Notation, 即 "JavaScript 对象表示法" . 简单来讲 : JSO ...

  3. 常用两种数据交换格式之XML和JSON的比较

    目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...

  4. XML和JSON两种数据交换格式的比较

    在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...

  5. Java 常见数据交换格式——xml、json、yaml

    目录 数据交换格式介绍 XML 使用DOM方式解析 使用SAX方式解析 使用DOM4J方式解析 使用JDOM方式解析 JSON 使用JSONObject方式将数据转换为JSON格式 利用JSONObj ...

  6. 数据交换格式XML和JSON对比

    1.简介: XML:extensible markup language,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(document type definition)文档类型定义来组 ...

  7. 【学习】006数据交换格式与SpringIOC底层实现

    课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...

  8. 两种常用的数据交换格式:XML和JSON

    不同编程语言之间的数据传输,需要一种通用的数据交换格式,它需要简洁.易于数据储存.快速读取,且独立于各种编程语言.我们往往传输的是文本文件,比如我们都知道的csv(comma seperated va ...

  9. 在.NET使用JSON作为数据交换格式

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhoufoxcn.blog.51cto.com/792419/517093 我们 ...

随机推荐

  1. ACM学习历程—Rotate(HDU 2014 Anshan网赛)(几何)

    Problem Description Noting is more interesting than rotation! Your little sister likes to rotate thi ...

  2. P1607 [USACO09FEB]庙会班车Fair Shuttle

    题目描述 Although Farmer John has no problems walking around the fair to collect prizes or see the shows ...

  3. 客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较

    前几天曾经发过一篇<ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较>,Jeffrey Zhao说用ASP.NET AJAX中的UpdatePanel似乎 ...

  4. mongodb数据迁移的两种方式

    环境说明:bbs数据采集的数据越来越多,目前是50G,每天大概以200W的数据量增长.而当前服务器1.2上面的空间不足,需要把数据迁移到空间足够大的1.3上面去 尝试了2种方式对数据进行迁移,一种是r ...

  5. Jetson TX2火力全开

    Jetson Tegra系统的应用涵盖越来越广,相应用户对性能和功耗的要求也呈现多样化.为此NVIDIA提供一种新的命令行工具,可以方便地让用户配置CPU状态,以最大限度地提高不同场景下的性能和能耗. ...

  6. JVM体系结构之六:堆Heap之2:新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数

    一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  7. canvas线条笔帽及连接

    1) 线条笔帽篇: 1 function draw (id) { 2 var canvas = document.getElementById(id); 3 context = canvas.getC ...

  8. bzoj4403

    组合数学 我好菜啊 想到dp去了... 事实上对于固定长度的数列,我们只用考虑选了哪些数就行了,所以这个就是$C(n+m-1,m-1)$ 也就是$n$个数,划分成$m$段且允许空的方案数 然后变成$\ ...

  9. .net 缓存之数据库缓存依赖

    当监听的指定数据库内容某张表变化时就更新缓存 先来配置数据库,启动监听服务(SQL2008下) 执行如下语句: ALTER DATABASE OumindBlog SET NEW_BROKER WIT ...

  10. 红米用adb连接显示unauthorized的解决办法

    网上能搜到的各种办法都试过了, 没一个可行: 1.大部份是用来解决usb不识别的,也就是adb devices不显示.但现在是有显示,只是unauthorized 2.我习惯用tcp连接,少根线,多台 ...