前言
在做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);