xstream学习,对象和xml之间转换,对象和json之间转换

xStream实现XML与JSON的完美转换 可扩展标记语言(Extensible Markup Language,XML)是一种标记语言,用于存储和传输数据。与HTML类似,XML使用标记来描述信息,但与HTML不同的是,XML不限于预先定义的标签,而是允许开发者定义他们自己的标签和属性。这样的特性使得XML非常适合于复杂数据的结构化表示,因此在数据交换、配置文件、文档存储等多种场景中都有广泛应用。虽然xStream默认的序列化行为能够满足许多场景的需要,但在某些特定情况下,可能需要自定义转换规则。这时,可以通过实现Converter。 阅读详情

1、测试对象

package domain;

import java.util.Date;

public class User {
	private String name;
	private int age;
	private Date birthday;
	private Car car;
	private List<Book> books;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}
	public List<Book> getBooks() {
		return books;
	}
	public void setBooks(List<Book> books) {
		this.books = books;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + ", birthday=" + birthday
				+ ", car=" + "Car [brand=" + car.getBrand() + ", price=" + car.getPrice() + ", factory="
				+ car.getFactory() + "]" + ", books=" + books + "]";
	}

	
}

package domain;

public class Book {

	private String bookName;
	private double price;
	private String author;
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	@Override
	public String toString() {
		return "Book [bookName=" + bookName + ", price=" + price + ", author="
				+ author + "]";
	}
	
	
}

package domain;

public class Car {

	
	private String brand;
	private double price;
	private String factory;
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getFactory() {
		return factory;
	}
	public void setFactory(String factory) {
		this.factory = factory;
	}
	@Override
	public String toString() {
		return "Car [brand=" + brand + ", price=" + price + ", factory="
				+ factory + "]";
	}
	
	
}

2、对象到xml的转换

package test;

import java.util.ArrayList;

public class TestBean2XML {

	//XStream 同时可以转换list和map
	public static void main(String[] args) {
//		map2XML();
		//------Car对象-----//
		Car car = new Car();
		car.setBrand("宝马");
		car.setFactory("上汽");
		car.setPrice(500000);
		//------Car对象-----//
		
		//------Book对象-----//
		Book book1 = new Book();
		book1.setBookName("语文");
		book1.setAuthor("张三");
		book1.setPrice(40.6);
		Book book2 = new Book();
		book2.setBookName("数学");
		book2.setAuthor("李四");
		book2.setPrice(23.5);
		Book book3 = new Book();
		book3.setBookName("英语");
		book3.setAuthor("王五");
		book3.setPrice(34);
		//------Book对象-----//
		
		//------User对象-----//
		User user = new User();
		user.setName("小红");
		user.setAge(12);
		user.setBirthday(new Date());
		user.setCar(car);
		List<Book> list = new ArrayList<Book>();
		list.add(book1);
		list.add(book2);
		list.add(book3);
		user.setBooks(list);
		//------User对象-----//
		
		//测试根据bean生成xml
		XStream xStream = new XStream();
//		xStream.alias("user", User.class);
		//将类重命名
		xStream.aliasType("用户", User.class);
		xStream.alias("book", Book.class);
		xStream.alias("car", Car.class);
		/*
		*/
		
		//测试重命名属性
		/*
		xStream.aliasField("姓名", User.class, "name");
		xStream.aliasField("汽车价格", Car.class, "price");
		xStream.aliasField("作者", Book.class, "author");
		*/
		
		//测试将字段申明在 xml的属性节点上,而非文本节点上,并重命名
		xStream.aliasAttribute(User.class, "name", "姓名");
		xStream.aliasAttribute(Car.class, "price", "汽车价格");
		xStream.aliasAttribute(Book.class, "author", "作者");
		String xml = xStream.toXML(user);
//		System.out.println(xml);
	}
	
	
	//将map转换为xml
	public static void map2XML(){
		 	Map<String, Book> map = new HashMap<String, Book>();
		 	Book bean1 = new Book();
		 	bean1.setBookName("语文");
		 	bean1.setPrice(234);
		 	bean1.setAuthor("张三");
		 	Book bean2 = new Book();
		 	bean2.setBookName("语文");
		 	bean2.setPrice(123);
		 	bean2.setAuthor("李四");
		 	
	        map.put("No.1", bean1);//put
	        map.put("No.3", bean2);//put
	        XStream xStream = new XStream();
	        xStream.alias("book", Book.class);
	        xStream.alias("key", String.class);
	        xStream.useAttributeFor(Book.class, "bookName");
			String xml = xStream.toXML(map);
	        System.out.println(xml);
	}
}

3、xml到对象的转换

package test;

import java.text.ParseException;

public class TestXML2Bean {

	static String xml = "<user name = \"小红\">"+
			  "<age>12</age>"+
			  "<birthday>2015-07-14 14:33:42.567 UTC</birthday>"+
			  "<car>"+
			    "<brand>宝马</brand>"+
			    "<price>500000.0</price>"+
			    "<factory>上汽</factory>"+
			  "</car>"+
			  "<books>"+
			    "<book>"+
			      "<bookName>语文</bookName>"+
			      "<price>40.6</price>"+
			      "<author>张三</author>"+
			    "</book>"+
			    "<book>"+
			      "<bookName>数学</bookName>"+
			      "<price>23.5</price>"+
			      "<author>李四</author>"+
			    "</book>"+
			    "<book>"+
			      "<bookName>英语</bookName>"+
			      "<price>34.0</price>"+
			      "<author>王五</author>"+
			    "</book>"+
			  "</books>"+
			"</user>";
	public static void main(String[] args) {
		//这里一定要是用 DomDriver才能fromXML
		XStream xStream = new XStream(new DomDriver());
		xStream.alias("user", User.class);
		xStream.alias("book", Book.class);
		xStream.alias("car", Car.class);
		
		xStream.registerConverter( new DateConverter());
		//如果是属性节点要同步设置xStream
		xStream.aliasAttribute(User.class,"name","name");
		User user = (User)xStream.fromXML(xml);
		System.out.println(user.toString());
	}
}
 class DateConverter  implements Converter {  
	 @Override  
	 public boolean canConvert(Class arg0) {  
	  
	  return Date.class == arg0;  
	 }  
	 @Override  
	 public void marshal(Object arg0, HierarchicalStreamWriter arg1,  
	   MarshallingContext arg2) {  
	  
	    
	 }  
	 @Override  
	 public Object unmarshal(HierarchicalStreamReader reader,  
	   UnmarshallingContext arg1) {  
	        GregorianCalendar calendar = new GregorianCalendar();   
	        SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期  
	        try {  
	                calendar.setTime(dateFm.parse(reader.getValue()));  
	        } catch (ParseException e) {  
	                throw new ConversionException(e.getMessage(), e);  
	        }   
	        return calendar.getTime();  
	  
	 }  
 }

4、对象到json的转换

package test;

import java.io.Writer;

public class TestBean2JSON {

	public static void main(String[] args) {
		Car car = new Car();
		car.setBrand("宝马");
		car.setFactory("上汽");
		car.setPrice(500000);
		// ------Car对象-----//

		// ------Book对象-----//
		Book book1 = new Book();
		book1.setBookName("语文");
		book1.setAuthor("张三");
		book1.setPrice(40.6);
		Book book2 = new Book();
		book2.setBookName("数学");
		book2.setAuthor("李四");
		book2.setPrice(23.5);
		Book book3 = new Book();
		book3.setBookName("英语");
		book3.setAuthor("王五");
		book3.setPrice(34);
		// ------Book对象-----//

		// ------User对象-----//
		User user = new User();
		user.setName("小红");
		user.setAge(12);
		user.setBirthday(new Date());
		user.setCar(car);
		List<Book> list = new ArrayList<Book>();
		list.add(book1);
		list.add(book2);
		list.add(book3);
		user.setBooks(list);
		
		//使用JettisonMappedXmlDriver驱动转换
		 /*
		 XStream xstream = new XStream(new JettisonMappedXmlDriver());
		 xstream.setMode(XStream.NO_REFERENCES);
		 */
		
		//使用JsonHierarchicalStreamDriver驱动转换
		// 删除根节点
		
		XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
			public HierarchicalStreamWriter createWriter(Writer out) {
				return new JsonWriter(out, JsonWriter.DROP_ROOT_MODE);
			}
		});
		
		xstream.alias("user", User.class);
		xstream.alias("book", Book.class);
		xstream.alias("car", Car.class);
		String xml = xstream.toXML(user);
		System.out.println(xml);
	}
}

5、json到对象的转换

package test;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;

import domain.Book;
import domain.Car;
import domain.User;

public class TestJSON2Bean {

	static String json = "{\"user\": {"+
					  "\"name\": \"小红\","+
					  "\"age\": 12,"+
					  "\"birthday\": \"2015-07-15 13:51:18.907 UTC\","+
					  "\"car\": {"+
					    "\"brand\": \"宝马\","+
					    "\"price\": 500000.0,"+
					    "\"factory\": \"上汽\""+
					  "},"+
					  "\"books\": ["+
					    "{"+
					      "\"bookName\": \"语文\","+
					      "\"price\": 40.6,"+
					      "\"author\": \"张三\""+
					    "},"+
					    "{"+
					      "\"bookName\": \"数学\","+
					      "\"price\": 23.5,"+
					      "\"author\": \"李四\""+
					    "},"+
					    "{"+
					      "\"bookName\": \"英语\","+
					      "\"price\": 34.0,"+
					      "\"author\": \"王五\""+
					    "}"+
					  "]"+
					"}}";
	
	static String json1 = "{\"books\": ["+
		    "{"+
		      "\"bookName\": \"语文\","+
		      "\"price\": 40.6,"+
		      "\"author\": \"张三\""+
		    "},"+
		    "{"+
		      "\"bookName\": \"数学\","+
		      "\"price\": 23.5,"+
		      "\"author\": \"李四\""+
		    "},"+
		    "{"+
		      "\"bookName\": \"英语\","+
		      "\"price\": 34.0,"+
		      "\"author\": \"王五\""+
		    "}"+
		  "]}";
	public static void main(String[] args) {
		System.out.println(json);
		XStream xstream = new XStream(new JettisonMappedXmlDriver());
		xstream.alias("user", User.class);
		xstream.alias("book", Book.class);
	    xstream.alias("car", Car.class);
	    User user = (User)xstream.fromXML(json);
	    //最后失败,貌似不能转 集合
		System.out.println(user.toString());
	}
}



























Xstream_java对象和xml的互相转换 立即下载

相关推荐

xstream将xml文档转换成json对象

xstream 将xml文档转换成 java对象,然后就可以利用json库转成json对象啦。

java xstream xml转json_java类 XStream xml json 转换

import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;import com...

weixin_28862561的博客 293

Quartus Prime v18.1 standard-QuartusPrimeV18.1标准版安装过程

Quartus Prime v18.1 standard安装破解过程 下载方式1:官网下载: https://fpgasoftware.intel.com/18.1/?edition=standard&platform=windows 下载方式2:可以从我的网盘下载安装包(如果链接未时效的话): 链接:https://pan.baidu.com/s/1bq4_FcNPSflU1zGJv__rvA 提取码:o0in ----------------------------------.

Alonger1988的博客 2万+

使用xStream对(Java对象、List集合、Map )到JSON转换、从JSON转换java对象

XStream对JSON的支持  xStream对JSON也有非常好的支持,它提供了2个模型驱动。用这2个驱动可以完成Java对象到JSON的相互转换。使用JettisonMappedXmlDriver驱动,将Java对象转换成json,需要添加jettison.jar  一、准备工作  1、 下载jar包、及官方资源  xStream的jar下载地址:  htt

juce的专栏 2633

未来智能家居解决方案:AI应用架构师的前沿探索

当你加班到深夜回家时,门锁自动识别你的脚步声解锁,玄关灯渐亮成你最爱的暖光,空调早已调到25℃(你夏天的习惯温度),音箱播放着最近循环的爵士乐,茶几上的智能水壶烧好了温水——这不是科幻电影,而是未来智能家居的日常。如何让“冰冷的设备”变成“懂你的伙伴”。我们将深入探讨五大前沿技术(边缘AI、多模态融合、联邦学习、数字孪生、个性化推荐)的底层原理,用“家里的小管家”“邻居互相学习”等生活化比喻简化复杂概念,结合代码示例与架构图还原实现流程,并通过智能卧室、智能厨房等真实案例展示落地路径。

AI天才研究院 1410

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 417

XStream - xml 与 对象的转换

使用XStream进行xml报文和实体的转换

空明的博客 1674

CentOS7下Ollama部署全攻略:从安装到自定义端口配置(附国内加速技巧)

本文详细介绍了在CentOS7系统上部署Ollama的完整流程,包括环境准备、模型下载优化、服务化部署及端口配置等关键步骤。特别针对国内网络环境提供了加速安装方案和镜像源配置技巧,帮助开发者快速搭建稳定的本地AI运行环境。

mmm90的博客 287

java数据类型转换____Xstream框架对象和XML的转换

package com.cnse.convert.xstream; /** * 对象转xml的po * @author God */ public class RespTextEntity { // 接收方帐号(收到的OpenID) private String ToUserName; // 开发者微信号 private String FromUserName; // 消息创建时

618

从零开始学习信号完整性(SIPI)--1 简介

信号完整性就是研究如何让驱动芯片发出的信号经过传输通道被接收芯片正确接收的学问。 信号完整性包含了三个要素: 信号:是被传输的主体,我们首先要了解、熟悉信号的特性。 芯片:分为驱动芯片和接收芯片,信号完整性工程师就是要实现信号在驱动芯片和接收芯片之间的正确传输。 传输通道:是传输信号的介质,是信号所走的“路”。如何实现信号的正确传输呢?那就要信号完整性工程师为信号“修路”、“搭桥”。

qq_29476769的博客 4万+

Zemax热分析实战:5分钟搞定双胶合透镜温度漂移优化(附操作数详解)

本文详细解析了使用Zemax进行光学系统热分析的全流程,以双胶合透镜为例,重点阐述了如何通过多重结构编辑器模拟温度变化,并利用关键操作数优化系统以抵抗温度漂移。文章提供了从基础设置到高级优化的实战技巧,帮助工程师快速掌握无热化设计方法,确保系统在宽温范围内保持稳定成像性能。

n4o5p6q7r的博客 396

XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 首先去官网下载响应JAR包 http://xstream.codehaus.org/index.html 最少需要两个jar包,一个xstream.jar,一个是xmlpull.jar 首先来看下java对象到xml的转换...

三也_攻城狮 2万+

全网最详细教程,手把书教你使用YOLOv10训练自己的数据集和推理(附YOLOv10网络结构图)

YOLOv10,由清华大学多媒体智能组只开发,是一款亳秒级实时端到端目标检测的开源模型。该模型在保持性能不变的情况下,与YOLOv9相比,延迟减少了46%,参数减少了25%,非常适合需要快速检测物体的应用,如实时视频分析、自动驾驶和智能医疗等领域。这些改进使得YOLOv10在实时物体检测领域达到了新的技术水平。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

《xStream完美转换XML、JSON》学习笔记

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,在线博文:http://www.cnb...

IT学习笔记 251

机器学习实战7-基于机器学习算法预测相亲成功率

大家好,我是微学AI,今天给大家介绍一下机器学习实战7-基于机器学习算法预测相亲成功率,随着社会的发展,大家都忙于事业,对自己的终身大事就耽搁了,相亲是一种传统的寻找伴侣的方式,随着时代的发展,相亲的方式也在不断地改变。在这个过程中,了解相亲双方的信息以及预测相亲是否成功变得越来越重要。本文将介绍如何使用随机森林算法对相亲成功进行预测,通过分析男女双方的房子、车子、长相、家庭条件、父母情况、生活习惯、学历、性格、兴趣等因素,来预测相亲是否成功。

微学AI的博客 3031

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

xStream完美转换XML、JSON

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 一、准备工作 1、 下载jar包、及官方资源 xStream的jar下载地址: https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstr

screensky的专栏 2380

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

xStream转换XML、JSON

一. 简介 xStream可以很容易实现Java对象和xml文档互相转换, 可以修改某个特定的属性和节点名称,xStream提供annotation注解, 可以在JavaBean中完成对xml节点和属性的描述,并支持Json的转换,只需要提供相关的JSONDriver就能完成转换

技术人生 7119

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 中XML和对象转换利器Xstream的使用

XStream框架: 虽说pull dom dom4j等优秀的xml解析工具使用非常广泛,但对于复杂庞大的数据交互来说,使用它们无疑让你倍加痛苦,你可能大部分精力都放在无聊繁琐的解析和拼装上,如果接口稍微改动,更令你有股辞职不相干的冲动,或许你更倾向选择JSON,但有时候你还是不得不面对JSON,XML,对象之间的转化的烦恼,如何用最简单的办法一统混乱的局面,让你全心全意做设计写业务?现在有了X

观千剑而后识器,操千曲而后晓声。 1万+

使用XStream将JSON转换为XML到Java对象

XStream库可以是将JSON从Java转换为XML来回转换的有效工具。 让我们逐一探究它们中的每一个,并查看使用了哪个驱动程序。 处理JSON 要将JSON转换为Java对象,您要做的就是使用适当的驱动程序初始化XStream对象,并准备将对象序列化到JSON(和从JSON序列化)。 XStream当前提供了两个用于JSON到对象ocnversion的驱动程序: Json...

最佳 Java 编程 622

xstream解析xml_使用XStream将JSON转换为XML到Java对象

xstream解析xml XStream库可以是将JSON从Java转换为XML来回转换的有效工具。让我们逐一探究它们中的每一个,并查看使用了哪个驱动程序。 处理JSON 要将JSON转换为Java对象,您所要做的就是使用适当的驱动程序初始化XStream对象,并准备将对象序列化到JSON或从JSON序列化。 XStream当前提供了两个用于JSON到对象ocnversion的驱动程序: ...

cunfen8879的博客 307

JAVA对象转XML之 xStream完美转换XML、JSON

xStream完美转换XML、JSON xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,在线

1046

XStream完美转换XML、JSON

1、 下载jar包、及官方资源 xStream的jar下载地址: https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/xstream-distribution/1.3.1/xstream-distribution-1.3.1-bin.zip 官方的示例很全,官方参考示例:h

query_1的专栏 1718

java xstream json_xStream完美转换XML、JSON

xStream框架xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;它们都完美支持JSON,但是对xml的支持还不是很好。一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象的描述。这里将会介绍xStream对JSON、XML的完美支持。xStream不仅对XML的转换非常友好,而且提供annotati...

weixin_28718345的博客 370

xStream完美转换XML、JSON /XStream Xml与JavaBean对象的互转经典【转载】

xStream完美转换XML、JSON xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,

pqszq1314的专栏 910
上一篇: java实现文本和文件的压缩和解压缩
下一篇: 注解@PostConstruct与@PreDestroy讲解及实例
fight_zhi
博客等级 码龄14年 27粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值