前言



     在做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截图:



java json存文件 java json 文件_java json存文件



 



 



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);