前言

     在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种。在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML文件的读写操作,以及与Bean之间的转换。示例代码都是经过Demo测试的,当然也会把代码上传到GitHub.需要的朋友可以看看。

 
准备工作
     我这里对XML与JSON主要依赖以下2个开源库,当然像针对xml和JSON解析的开源库非常的多,下面这2个感觉相对用起来比较简单。需要注意的是如果缺少下面jar文件中的一个,可能就会出现ClassNotFound 异常,如果发现使用的方法在当前库中找不到,则可能是库版本不同造成的,可以去官网查阅。
 
1.JSON解析库:
Jackson JSON Processor
官网:http://jackson.codehaus.org/
 
2.XML解析库 :
Simple XML serialization framework
官网:http://simple.sourceforge.net/home.php
 
lib截图:
 
 
JSON 操作详细代码:
1.JSON字符串转换为Bean
 
     /**
* JSON字符串转换为对象
* @param src JSON字符串
* @param target 目标Bean
*/
public static <T> T String2Object(String src, Class<T> target) throws
JsonParseException, JsonMappingException, IOException { ObjectMapper mapper = new ObjectMapper();
//配置,允许使用单引号字符的JSON
mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
return mapper.readValue( new StringReader(src), target);
}
2.Bean对象转换为JSON字符串
     /***
* 将对象序列化为JSONObject字符串
* @param object bean对象
* @return String JSONString
*/
public static String toJSONObjectString(Object object) {
JSONObject jsonObject = JSONObject. fromObject(object);
return jsonObject.toString();
}
3.JSON字符串转换为ArrayList
     /**
* 字符串转化为目标List列表
* @param src 源JSON串
* @param target 目标类型
* @return 转化后的列表对象
*/
@SuppressWarnings("rawtypes")
public static List String2ObjectsList(String src, Class target)
throws Exception { ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
List result = mapper.readValue( new StringReader(src),
TypeFactory. collectionType(ArrayList.class, target)); return result;
}
4.ArrayList转换为JSON字符串
        /**
* 将List对象序列化为JSON文本
* @param list
* @return List <T>
*/
public static <T> String toJSONString(List<T> list) { JSONArray jsonArray = JSONArray. fromObject(list);
return jsonArray.toString();
}
     其他的一些复杂的Bean转换,就不再多介绍了,主要都是围绕JSONObject,JSONArray,ObjectMapper这几个对象操作的,具体可以看看官方文档。
 
XML 操作详细代码:
     Simple 这个库通过对Bean对象提前通过添加注解的方式,从而简单易懂的方式来达到Bean与XML之间的转换
 
Bean Example:
 import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root; @Root//根节点
public class User { @Attribute//作为属性
private Integer id; @Element//作为元素
private String name; @Element
private String email; public User() {
super();
} public User(Integer id, String name, String email) {
super();
this. id = id;
this. name = name;
this. email = email;
} /**
* the below is getter and setter function
*/ public Integer getId() {
return id;
} public void setId(Integer id) {
this. id = id;
} public String getName() {
return name;
} public void setName(String name) {
this. name = name;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this. email = email;
}
}
1.XML字符串转换为Bean对象
                  //定义序列化对象
Serializer serializer = new Persister();
User user = new User(1001,"test","wewoor@foxmail.com" );
String test = "<user id='1001'><name>test12</name><email>wewoor@foxmail.com</email></user>";
//读取
serializer.read(user, test);
System. out.print(user.getId());
 
2.Bean对象转换为XML字符串
                 User user = new User(1001,"test","wewoor@foxmail.com" );
//定义序列化对象
Serializer serializer = new Persister();
//输出流
OutputStream out = new ByteArrayOutputStream();
serializer.write(user, out);
result = out.toString();
System. out.print(result);
out.close();
 
3.将Bean对象写入XML文件
                 file = new File("Ziv.xml");
User user = new User(1001,"test","wewoor@foxmail.com" );
//定义序列化对象
Serializer serializer = new Persister();
//将User user 写入ziv.xml
serializer.write(user, file);
 
4.读取XML文件转换为Bean
                 file = new File( "Ziv.xml");
User user = new User();
//定义序列化对象
Serializer serializer = new Persister();
//读取ziv.xml到User中
serializer.read(user, file);

Java JSON、XML文件/字符串与Bean对象互转解析的更多相关文章

  1. Java—JSON串转换成实体Bean对象模板

    介绍 模板需求说明   开发中经常遇到前端传递过来的JSON串的转换,后端需要解析成对象,有解析成List的,也有解析成Map的. 依赖 <dependency> <groupId& ...

  2. java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.javaimport java.io.FileInputStream; import java.io.FileWriter; i ...

  3. Java Json格式的字符串转变对象

    Java Json格式的字符串转变对象: 方法还是比较多的: 学习:https://my.oschina.net/heweipo/blog/386808 其中的jsonlib说明:http://www ...

  4. JAVA读取XML文件并解析获取元素、属性值、子元素信息

    JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取  InputStream   DocumentBuilderFactory   Element     Node 前言 最 ...

  5. 用java操作XML文件(DOM解析方式)

    XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DO ...

  6. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  7. Java操作xml文件

    Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...

  8. java用Annotation注入到成员Bean对象

    java用Annotation注入到成员Bean对象 在使用一些java框架的时候,经常看到一些注解,而且使用注解之后就可以免去一些xml的繁琐配置,本文记录如何通过注解获得成员Bean对象. 一.首 ...

  9. 通过Java读取xml文件内容

    读取XML中的内容就需要对XML进行解析,目前对XML进行解析的方法分为四种: 下面解析的方法是DOM4J,需要下载jar包dom4j:https://dom4j.github.io/ package ...

随机推荐

  1. 使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试

    返回JsonResult是MVC中的常见返回值类型,而且简单方便的方式是结合匿名类型一起使用. 比如: public ActionResult PreviewEmail() { …… return J ...

  2. 方程ax2+bx+c=0;一元二次方程。求根

    <body>方程ax2+bx+c=0;一元二次方程.求根请输入a:<input type="number" id="a"/><br ...

  3. jQuery Validate 表单验证插件----利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面 ...

  4. Eclipse 启动Tomcat 超时报错的解决方案

    在用eclipse开发项目  用tomcat发布项目的时候  会提示超时, Server Tomcat v7.0 Server at localhost was unable to start wit ...

  5. jsp页面img利用tomcat配置访问服务器绝对路径显示图片

    1.打开tomcat下的server.xml文件,路径\apache-tomcat-7.0.62\conf文件夹下. 2.下<host></host>加入<Context ...

  6. 查看Linux服务器内存使用情况

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

  7. [译] C track: compiling C programs.

    原文:C track: compiling C programs. C track: compiling C programs. 尽管有些计算机语言(如 Schema 或者 Basic)通常使用交互式 ...

  8. 查看Ubuntu版本

    一.查看Ubuntu版本号 方法一 root@wiki:~# cat /etc/issue Ubuntu 14.04.1 LTS \n \l 方法二 root@wiki:~# sudo lsb_rel ...

  9. 51nod-1661 1661 黑板上的游戏(组合游戏)

    题目链接: 1661 黑板上的游戏 Alice和Bob在黑板上玩一个游戏,黑板上写了n个正整数a1, a2, ..., an,游戏的规则是这样的:1. Alice占有先手主动权.2. 每个人可以选取一 ...

  10. 实习小记-python中可哈希对象是个啥?what is hashable object in python?

    废话不多说直接祭上python3.3x的文档:(原文链接) object.__hash__(self) Called by built-in function hash() and for opera ...