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

来源:互联网 发布:淘宝网套装连衣裙 编辑:程序博客网 时间:2024/05/21 08:03

 Java Json/xml 序列化和反序列化: 工具JsonTools 和 simpleframework 

 

1. xml 序列化反序列化工具:simpleframework  功能非常强大,使用起来非常简单,自己可以百度一下

使用方法:首先根据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 工具

xml 序列化反序列化工具:JsonTools
JsonTools是一个不错的JSON序列化和反序列化功能包,在这里可以下载到它:http://jsontools.berlios.de/
使用介绍:
       //序列化
       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
Sheet.java
Table.java
Row.java
 下一遍将介绍将树形数据读取成json格式
 Sunny liu
2009-11-19