• Java JSON、XML文件/字符串与Bean对象互转解析


    前言

         在做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);
  • 相关阅读:
    【html、CSS、javascript-9】jquery-选择器及过滤器
    【python之路40】Python 作用域
    H5缓存
    解决网络不可用--Using_Service_Workers
    跨域请求CORS
    基于node的websocket示例
    test
    函数节流
    ES6 promise
    web前端免费资源集
  • 原文地址:https://www.cnblogs.com/zivxiaowei/p/3605283.html
Copyright © 2020-2023  润新知