Java Json/xml 序列化和反序列化工具:JsonTools 和 simpleframework【附带实例】

Json序列化:将java bean转换成Json字符串;Json反序列化:将Json字符串转换成java bean。

xml序列化:将java bean转换成xml文件;xml反序列化:将xml文件转换成java bean。

1. xml 序列化反序列化工具:simple framework  功能非常强大,使用起来非常简单。在这里可以下载到它:http://download.csdn.net/detail/ptzrbin/5327967

使用方法:首先根据xml文件建好java bean ,可以是非常复杂的java bean。  对应的xml文件和java bean 见文章尾部。

导入:

  1. import org.simpleframework.xml.Serializer;  
  2. import org.simpleframework.xml.core.Persister;  
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

直接使用:

  1. File file = new File("c://mystd.xml");  
  2.   Serializer serializer = new Persister();  
  3. //反序列化   
  4.   Bean rule=serializer.read(Bean.class, file);  
  5. //序列化   
  6. serializer.write(rule, file);  
File file = new File("c://mystd.xml");
  Serializer serializer = new Persister();
//反序列化
  Bean rule=serializer.read(Bean.class, file);
//序列化
serializer.write(rule, file);

下面主要介绍json的序列化反序列化 工具

2.Json 工具

Json序列化反序列化工具:JsonTools
JsonTools是一个不错的JSON序列化和反序列化功能包,在这里可以下载到它: http://download.csdn.net/detail/ptzrbin/5327972
使用介绍:
  1. //序列化   
  2. JSONValue jsonValue = JSONMapper.toJSON( bean);     
  3. String jsonStr = jsonValue.render(true);   //是否格式化  
  4. System.out.println(jsonStr);    
  5.   
  6. //反序列化    
  7. JSONParser parser = new JSONParser(new StringReader(jsonStr));     
  8. L2Rule bean = (L2Rule) JSONMapper.toJava(parser.nextValue(), L2Rule.class);    
 //序列化
 JSONValue jsonValue = JSONMapper.toJSON( bean);   
 String jsonStr = jsonValue.render(true);   //是否格式化
 System.out.println(jsonStr);  

 //反序列化 
 JSONParser parser = new JSONParser(new StringReader(jsonStr));   
 L2Rule bean = (L2Rule) JSONMapper.toJava(parser.nextValue(), L2Rule.class);  

 

原始xml文件:
  1. <L2Rule>  
  2. <Sheet Type="BS">   
  3.  <Table>   
  4.   <Row ItemName="Total assets" USID="USGB123450" Level="0"/>   
  5.   <Row ItemName="Total current assets" USID="USGB123451"  Level="1"/>   
  6.   <Row ItemName="Cash and cash equivalents" USID="USGB123452" Level="2" />   
  7.   <Row ItemName="Accounts receivable, net of allowance for bad debts of " USID="USGB123453" Level="2" />   
  8.   <Row ItemName="Current assets" USID="USGB123454" Level="2" />   
  9.     </Table>   
  10. </Sheet>  
  11. </L2Rule>  
<L2Rule>
<Sheet Type="BS"> 
 <Table> 
  <Row ItemName="Total assets" USID="USGB123450" Level="0"/> 
  <Row ItemName="Total current assets" USID="USGB123451"  Level="1"/> 
  <Row ItemName="Cash and cash equivalents" USID="USGB123452" Level="2" /> 
  <Row ItemName="Accounts receivable, net of allowance for bad debts of " USID="USGB123453" Level="2" /> 
  <Row ItemName="Current assets" USID="USGB123454" Level="2" /> 
    </Table> 
</Sheet>
</L2Rule>


解析后的json:
{"sheet":[{"tables":{"rows":[{"itemName":"Total assets","level":"0","usid":"USGB123450"},{"itemName":"Total current assets","level":"1","usid":"USGB123451"},{"itemName":"Cash and cash equivalents","level":"2","usid":"USGB123452"},{"itemName":"Accounts receivable, net of allowance for bad debts of ","level":"2","usid":"USGB123453"},{"itemName":"Current assets","level":"2","usid":"USGB123454"}]},"type":"BS"}]}
 加格式:
{
   "sheet" :
      [
         {
            "tables" :
               {
                  "rows" :
                     [
                        {
                           "itemName" : "Total assets",
                           "level" : "0",
                           "usid" : "USGB123450"
                        },
                        {
                           "itemName" : "Total current assets",
                           "level" : "1",
                           "usid" : "USGB123451"
                        },
                        {
                           "itemName" : "Cash and cash equivalents",
                           "level" : "2",
                           "usid" : "USGB123452"
                        },
                        {
                           "itemName" : "Accounts receivable, net of allowance for bad debts of ",
                           "level" : "2",
                           "usid" : "USGB123453"
                        },
                        {
                           "itemName" : "Current assets",
                           "level" : "2",
                           "usid" : "USGB123454"
                        }
                     ]
               },
            "type" : "BS"
         }
      ]
}

对应的bean:

L2Rule.java
  1. import org.simpleframework.xml.ElementList;  
  2. import org.simpleframework.xml.Root;  
  3.   
  4. @Root(name="L2Rule")  
  5. public class L2Rule  
  6. {  
  7.     @ElementList(name="Sheet",required=false,inline=true)  
  8.     public List<Sheet> sheet = new LinkedList<Sheet>();  
  9.   
  10.     public List<Sheet> getSheet()  
  11.     {  
  12.         return sheet;  
  13.     }  
  14.   
  15.     public void setSheet(List<Sheet> sheet)  
  16.     {  
  17.         this.sheet = sheet;  
  18.     }  
  19.   
  20.       
  21. }  
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

@Root(name="L2Rule")
public class L2Rule
{
	@ElementList(name="Sheet",required=false,inline=true)
	public List<Sheet> sheet = new LinkedList<Sheet>();

	public List<Sheet> getSheet()
    {
    	return sheet;
    }

	public void setSheet(List<Sheet> sheet)
    {
    	this.sheet = sheet;
    }

	
}

Sheet.java
  1. import org.simpleframework.xml.Attribute;  
  2. import org.simpleframework.xml.Element;  
  3. import org.simpleframework.xml.Root;  
  4.   
  5. @Root(name="Sheet")  
  6. public class Sheet  
  7. {  
  8.     @Element(name="Table",required=false)  
  9.     public Table tables = new Table();  
  10.       
  11.     @Attribute(name="Type",required=false)  
  12.     public String type;  
  13.   
  14.       
  15.   
  16.     public Table getTables()  
  17.     {  
  18.         return tables;  
  19.     }  
  20.   
  21.     public void setTables(Table tables)  
  22.     {  
  23.         this.tables = tables;  
  24.     }  
  25.   
  26.     public String getType()  
  27.     {  
  28.         return type;  
  29.     }  
  30.   
  31.     public void setType(String type)  
  32.     {  
  33.         this.type = type;  
  34.     }  
  35. }  
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root(name="Sheet")
public class Sheet
{
	@Element(name="Table",required=false)
	public Table tables = new Table();
	
	@Attribute(name="Type",required=false)
	public String type;

	

	public Table getTables()
    {
    	return tables;
    }

	public void setTables(Table tables)
    {
    	this.tables = tables;
    }

	public String getType()
    {
    	return type;
    }

	public void setType(String type)
    {
    	this.type = type;
    }
}

Table.java
  1. import java.util.LinkedList;  
  2. import java.util.List;  
  3.   
  4. import org.simpleframework.xml.ElementList;  
  5. import org.simpleframework.xml.Root;  
  6.   
  7. @Root(name="Table")  
  8. public class Table  
  9. {  
  10.     @ElementList(name="Row",required=false,inline=true)  
  11.     public List<Row> rows = new LinkedList<Row>();  
  12.   
  13.     public List<Row> getRows()  
  14.     {  
  15.         return rows;  
  16.     }  
  17.   
  18.     public void setRows(List<Row> rows)  
  19.     {  
  20.         this.rows = rows;  
  21.     }  
  22. }  
import java.util.LinkedList;
import java.util.List;

import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

@Root(name="Table")
public class Table
{
	@ElementList(name="Row",required=false,inline=true)
	public List<Row> rows = new LinkedList<Row>();

	public List<Row> getRows()
    {
    	return rows;
    }

	public void setRows(List<Row> rows)
    {
    	this.rows = rows;
    }
}

Row.java
  1. import org.simpleframework.xml.Attribute;  
  2. import org.simpleframework.xml.Root;  
  3.   
  4. @Root(name="Row")  
  5. public class Row  
  6. {  
  7.     @Attribute(name="ItemName",required=true)  
  8.     public String itemName;  
  9.     @Attribute(name="USID",required=true)  
  10.     public String usid;  
  11.     @Attribute(name="Level",required=true)  
  12.     public String level;  
  13.     public String getItemName()  
  14.     {  
  15.         return itemName;  
  16.     }  
  17.     public void setItemName(String itemName)  
  18.     {  
  19.         this.itemName = itemName;  
  20.     }  
  21.     public String getUsid()  
  22.     {  
  23.         return usid;  
  24.     }  
  25.     public void setUsid(String usid)  
  26.     {  
  27.         this.usid = usid;  
  28.     }  
  29.     public String getLevel()  
  30.     {  
  31.         return level;  
  32.     }  
  33.     public void setLevel(String level)  
  34.     {  
  35.         this.level = level;  
  36.     }  
  37.       
  38. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值