如何动态地将平面键值文件转换为bean对象?

时间:2017-05-17 21:53:40

标签: java mapping

我想将包含许多不同键的平面文件转换为java bean dto,如下所示:

平面文件:

mykey=example
anotherkey=test
adress-street-1=downtown street
address-town-1=nyc
address-stree-2=some street
adrerss-town-2=los angeles

目标bean:

public class Content {
    private String mykey;
    private String anotherkey;
    private List<Address> address;
}

public class Address {
    private String street,
    private String town;    
}

问题:如何实现平面文件和目标bean之间的映射?想象一下几百个属性键。有些可能会多次出现,在这种情况下,它们会带有索引号,例如address-town-1

Content content = new Content();

while(true) {
   String line = reader.readLine();
   String key = line.split("=")[0];
   String value = line.split("=")[1];

   switch(key) {
      case "mykey": content.setMykey(value);
      case "anotherkey": content.setAnotherkey(value);
      ...
   }
}

但我必须将这些映射编码几百次,这感觉不对。

问题:是否有更好的方法,例如使用某种xml配置/映射文件和反射?

BeanIO接近我想要实现的目标。但它缺乏将多个不同字段转换为bean字段名称的能力。而且它也不能将address-*示例中的集合分组到List

我可以使用任何已知的库或概念吗?一些可以使用例如xml配置文件进行格式化的框架?

或者我是否必须编写自己的解析器并使用反射将数据写入我的java对象?

0 个答案:

没有答案