前言

     在做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
 
  1. /**
  2. * JSON字符串转换为对象
  3. * @param src JSON字符串
  4. * @param target 目标Bean
  5. */
  6. public static <T> T String2Object(String src, Class<T> target) throws
  7. JsonParseException, JsonMappingException, IOException {
  8.  
  9. ObjectMapper mapper = new ObjectMapper();
  10. //配置,允许使用单引号字符的JSON
  11. mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
  12. return mapper.readValue( new StringReader(src), target);
  13. }
2.Bean对象转换为JSON字符串
  1. /***
  2. * 将对象序列化为JSONObject字符串
  3. * @param object bean对象
  4. * @return String JSONString
  5. */
  6. public static String toJSONObjectString(Object object) {
  7. JSONObject jsonObject = JSONObject. fromObject(object);
  8. return jsonObject.toString();
  9. }
3.JSON字符串转换为ArrayList
  1. /**
  2. * 字符串转化为目标List列表
  3. * @param src 源JSON串
  4. * @param target 目标类型
  5. * @return 转化后的列表对象
  6. */
  7. @SuppressWarnings("rawtypes")
  8. public static List String2ObjectsList(String src, Class target)
  9. throws Exception {
  10.  
  11. ObjectMapper mapper = new ObjectMapper();
  12. mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
  13. List result = mapper.readValue( new StringReader(src),
  14. TypeFactory. collectionType(ArrayList.class, target));
  15.  
  16. return result;
  17. }
4.ArrayList转换为JSON字符串
  1. /**
  2. * 将List对象序列化为JSON文本
  3. * @param list
  4. * @return List <T>
  5. */
  6. public static <T> String toJSONString(List<T> list) {
  7.  
  8. JSONArray jsonArray = JSONArray. fromObject(list);
  9. return jsonArray.toString();
  10. }
     其他的一些复杂的Bean转换,就不再多介绍了,主要都是围绕JSONObject,JSONArray,ObjectMapper这几个对象操作的,具体可以看看官方文档。
 
XML 操作详细代码:
     Simple 这个库通过对Bean对象提前通过添加注解的方式,从而简单易懂的方式来达到Bean与XML之间的转换
 
Bean Example:
  1. import org.simpleframework.xml.Attribute;
  2. import org.simpleframework.xml.Element;
  3. import org.simpleframework.xml.Root;
  4.  
  5. @Root//根节点
  6. public class User {
  7.  
  8. @Attribute//作为属性
  9. private Integer id;
  10.  
  11. @Element//作为元素
  12. private String name;
  13.  
  14. @Element
  15. private String email;
  16.  
  17. public User() {
  18. super();
  19. }
  20.  
  21. public User(Integer id, String name, String email) {
  22. super();
  23. this. id = id;
  24. this. name = name;
  25. this. email = email;
  26. }
  27.  
  28. /**
  29. * the below is getter and setter function
  30. */
  31.  
  32. public Integer getId() {
  33. return id;
  34. }
  35.  
  36. public void setId(Integer id) {
  37. this. id = id;
  38. }
  39.  
  40. public String getName() {
  41. return name;
  42. }
  43.  
  44. public void setName(String name) {
  45. this. name = name;
  46. }
  47.  
  48. public String getEmail() {
  49. return email;
  50. }
  51.  
  52. public void setEmail(String email) {
  53. this. email = email;
  54. }
  55. }
1.XML字符串转换为Bean对象
  1. //定义序列化对象
  2. Serializer serializer = new Persister();
  3. User user = new User(1001,"test","wewoor@foxmail.com" );
  4. String test = "<user id='1001'><name>test12</name><email>wewoor@foxmail.com</email></user>";
  5. //读取
  6. serializer.read(user, test);
  7. System. out.print(user.getId());
 
2.Bean对象转换为XML字符串
  1. User user = new User(1001,"test","wewoor@foxmail.com" );
  2. //定义序列化对象
  3. Serializer serializer = new Persister();
  4. //输出流
  5. OutputStream out = new ByteArrayOutputStream();
  6. serializer.write(user, out);
  7. result = out.toString();
  8. System. out.print(result);
  9. out.close();
 
3.将Bean对象写入XML文件
  1. file = new File("Ziv.xml");
  2. User user = new User(1001,"test","wewoor@foxmail.com" );
  3. //定义序列化对象
  4. Serializer serializer = new Persister();
  5. //将User user 写入ziv.xml
  6. serializer.write(user, file);
 
4.读取XML文件转换为Bean
  1. file = new File( "Ziv.xml");
  2. User user = new User();
  3. //定义序列化对象
  4. Serializer serializer = new Persister();
  5. //读取ziv.xml到User中
  6. 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. 如何修改opencms数据库配置

    修改/webapps/opencms/WEB-INF/config/opencms.properties文件 什么情况下需要修改配置? 1. 使用过程中,修改数据库配置: 2. 太长时间没接触服务器, ...

  2. Effective Java 39 Make defensive copies when needed

    Principle It is essential to make a defensive copy of each mutable parameter to the constructor. Def ...

  3. Java小方法

    /** * 计算百分比. * @param dividend 被除数 * @param divisor 除数 * @return 结果 */ private String getPercent(lon ...

  4. Spring依赖注入三种方式详解

    在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...

  5. 001.linux下clock()检测程序运行时间

    #include <stdio.h> #include <time.h> int main() { int i; int k; clock_t start,end; //clo ...

  6. php redis 获取指定前缀的所有key

    php redis 获取指定前缀的所有key 以laravel框架为例: $key = $this->redis->keys('db:shipping:shippingId:' . &qu ...

  7. Webshell实现与隐藏探究

    一.什么是webshell webshell简介 webshell,顾名思义:web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,webshell就是就是web的一个管理 工具,可以 ...

  8. NOIP2008提高组(前三题) -SilverN

    此处为前三题,第四题将单独发布 火柴棒等式 题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0 ...

  9. java lambda小纪

    一个通俗的说法是 :C#委托和Java中实现了 函数式编程的方法,它是函数式编程中的概念,为了更快的处理集合,在Java,c#等静态类型语言中想要引用一个函数的一种方式,(实现了通过封装匿名方法来达到 ...

  10. 边工作边刷题:70天一遍leetcode: day 84-1

    Verify preorder sequence of Binary Search Tree 要点:simulating preorder sequence: 根据preorder的特点,首先会一直向 ...