(一)优雅解析转换XML
常用注解:
@XStreamAlias("xml")表示映射的属性名称
@XStreamConverter(XStreamCDataConverter.class)表示映射的属性添加CDATA元素
(步骤一)maven引入
dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.9</version> </dependency>
(步骤二)XML解析工具
public class XMLUtils { public static <T> T toBean(String xml, Class<T> clazz) { XStream xstream = new XStream(new DomDriver()); xstream.processAnnotations(clazz); return (T)xstream.fromXML(xml); } public static String toXML(Object object) { XStream xstream = new XStream(); xstream.processAnnotations(object.getClass()); return xstream.toXML(object); } }(步骤三)带有注解的javaBean
@XStreamAlias("xml") public class XMLMessage { @XStreamAlias("name") private String name; @XStreamAlias("age") private Integer age; @XStreamAlias("telphone") private PhoneNumber telphone; }(步骤四)测试使用
public class XMLTest { public static void main(String[] args) { String xml ="<xml><name>pizi</name><age>21</age></xml>"; XMLMessage xmlMessage = (XMLUtils.toBean(xml, XMLMessage.class)); System.out.println(xmlMessage); System.out.println(XMLUtils.toXML(xmlMessage)); } }
(二)优雅解析转换json
常用注解:
@SerializedName 序列化映射名称
@Expose 字段过滤 有选择的筛选反序列化和序列化
(步骤一)maven引入
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency>(步骤二)Json解析工具
public class JsonUtils { public static <T> T toBean(String json, Class<?> clazz) { Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .create(); return (T)gson.fromJson(json, clazz); } public static String toJson(Object object) { Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .create(); return gson.toJson(object); } }(步骤三)带有注解的javaBean
public class PhoneNumber { /**容错机制 并且保留PHP或者js的命名规范*/ @SerializedName(value="name", alternate = { "name_", "Name" }) private String name; @SerializedName("number") private String number; /**字段过滤*/ @Expose(deserialize = false,serialize = true) private String code; }(步骤四)测试使用
public class JsonTest { public static void main(String[] args) { String jsonStr ="{name:pizi,number:123456,code:0793}"; PhoneNumber phoneNumber = JsonUtils.toBean(jsonStr, PhoneNumber.class); System.out.println(phoneNumber); System.out.println(JsonUtils.toJson(phoneNumber)); } }(三)优雅解析转换excel
常用注解:
@XlsSheet(name="院士名单") 映射Excel中的Sheet
@XlsHorizontalRecords(headerColumn = 0, headerRow = 1) 映射Excel中的水平标题记录
@XlsColumn(columnName="姓名") 映射Excel中的列
(步骤一)maven引入
<dependency> <groupId>com.github.mygreen</groupId> <artifactId>xlsmapper</artifactId> <version>${xlsmapper.version}</version> </dependency>
(步骤二)excel解析工具
public class ExcelUtils { public static <T> T toBean(InputStream excel, Class<T> clazz) throws IOException, XlsMapperException { XlsMapper xlsMapper = new XlsMapper(); return (T)xlsMapper.load(excel, clazz); } }
(步骤三)带有注解的javaBean
其中包括 Excel中的Sheet以及Sheet中列Column
@XlsSheet(name="院士名单") public class AcaTalentPoolSheetDTO extends BaseTalentPoolSheetDTO{ @XlsHorizontalRecords(headerColumn = 0, headerRow = 1) List<TalentPoolDTO> talentpools; public List<TalentPoolDTO> getTalentpools() { return talentpools; } public void setTalentpools(List<TalentPoolDTO> talentpools) { this.talentpools = talentpools; } }
public class TalentPoolDTO extends BaseDTO { /** 姓名*/ @Field("talent_name") @Verfication(name = "姓名", notEmpty = true, maxlength = 50) @XlsColumn(columnName="姓名") private String talentName;
(步骤四)测试使用