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://sourceforge.net/projects/simple/

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

导入:

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

直接使用:

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://sourceforge.net/projects/jontools/
使用介绍:
 //序列化
 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文件:
<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
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
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
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
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Root;

@Root(name="Row")
public class Row
{
	@Attribute(name="ItemName",required=true)
	public String itemName;
	@Attribute(name="USID",required=true)
	public String usid;
	@Attribute(name="Level",required=true)
	public String level;
	public String getItemName()
    {
    	return itemName;
    }
	public void setItemName(String itemName)
    {
    	this.itemName = itemName;
    }
	public String getUsid()
    {
    	return usid;
    }
	public void setUsid(String usid)
    {
    	this.usid = usid;
    }
	public String getLevel()
    {
    	return level;
    }
	public void setLevel(String level)
    {
    	this.level = level;
    }
	
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值