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. importorg.simpleframework.xml.Serializer;
  2. importorg.simpleframework.xml.core.Persister;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

直接使用:

  1. Filefile=newFile("c://mystd.xml");
  2. Serializerserializer=newPersister();
  3. //反序列化
  4. Beanrule=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. JSONValuejsonValue=JSONMapper.toJSON(bean);
  3. StringjsonStr=jsonValue.render(true);//是否格式化
  4. System.out.println(jsonStr);
  5. //反序列化
  6. JSONParserparser=newJSONParser(newStringReader(jsonStr));
  7. L2Rulebean=(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. <SheetType="BS">
  3. <Table>
  4. <RowItemName="Totalassets"USID="USGB123450"Level="0"/>
  5. <RowItemName="Totalcurrentassets"USID="USGB123451"Level="1"/>
  6. <RowItemName="Cashandcashequivalents"USID="USGB123452"Level="2"/>
  7. <RowItemName="Accountsreceivable,netofallowanceforbaddebtsof"USID="USGB123453"Level="2"/>
  8. <RowItemName="Currentassets"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. importorg.simpleframework.xml.ElementList;
  2. importorg.simpleframework.xml.Root;
  3. @Root(name="L2Rule")
  4. publicclassL2Rule
  5. {
  6. @ElementList(name="Sheet",required=false,inline=true)
  7. publicList<Sheet>sheet=newLinkedList<Sheet>();
  8. publicList<Sheet>getSheet()
  9. {
  10. returnsheet;
  11. }
  12. publicvoidsetSheet(List<Sheet>sheet)
  13. {
  14. this.sheet=sheet;
  15. }
  16. }
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. importorg.simpleframework.xml.Attribute;
  2. importorg.simpleframework.xml.Element;
  3. importorg.simpleframework.xml.Root;
  4. @Root(name="Sheet")
  5. publicclassSheet
  6. {
  7. @Element(name="Table",required=false)
  8. publicTabletables=newTable();
  9. @Attribute(name="Type",required=false)
  10. publicStringtype;
  11. publicTablegetTables()
  12. {
  13. returntables;
  14. }
  15. publicvoidsetTables(Tabletables)
  16. {
  17. this.tables=tables;
  18. }
  19. publicStringgetType()
  20. {
  21. returntype;
  22. }
  23. publicvoidsetType(Stringtype)
  24. {
  25. this.type=type;
  26. }
  27. }
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. importjava.util.LinkedList;
  2. importjava.util.List;
  3. importorg.simpleframework.xml.ElementList;
  4. importorg.simpleframework.xml.Root;
  5. @Root(name="Table")
  6. publicclassTable
  7. {
  8. @ElementList(name="Row",required=false,inline=true)
  9. publicList<Row>rows=newLinkedList<Row>();
  10. publicList<Row>getRows()
  11. {
  12. returnrows;
  13. }
  14. publicvoidsetRows(List<Row>rows)
  15. {
  16. this.rows=rows;
  17. }
  18. }
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. importorg.simpleframework.xml.Attribute;
  2. importorg.simpleframework.xml.Root;
  3. @Root(name="Row")
  4. publicclassRow
  5. {
  6. @Attribute(name="ItemName",required=true)
  7. publicStringitemName;
  8. @Attribute(name="USID",required=true)
  9. publicStringusid;
  10. @Attribute(name="Level",required=true)
  11. publicStringlevel;
  12. publicStringgetItemName()
  13. {
  14. returnitemName;
  15. }
  16. publicvoidsetItemName(StringitemName)
  17. {
  18. this.itemName=itemName;
  19. }
  20. publicStringgetUsid()
  21. {
  22. returnusid;
  23. }
  24. publicvoidsetUsid(Stringusid)
  25. {
  26. this.usid=usid;
  27. }
  28. publicStringgetLevel()
  29. {
  30. returnlevel;
  31. }
  32. publicvoidsetLevel(Stringlevel)
  33. {
  34. this.level=level;
  35. }
  36. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值