String-Object转换器

时间:2013-07-10 08:37:25

标签: java javafx converter tostring

我想要一个可以在String中转换对象(带有一些参数String或int)的方法,更重要的是,将该String转换回对象。你知道为此目的开发转换器的方法吗?

问题是该对象是其他开发人员使用的DTO,因此我无法修改toString()方法。因此我创建了自己的方法toString,但我不知道如何可靠地使转换器双向工作。我想过几个解决方案(将对象存储在地图中等),但它们似乎都不清楚阅读/理解。是否有任何通常的方法可以让每个有经验的程序员在眨眼之间了解它的作用?

编辑:嗯,我知道序列化,但我的问题不明确,对不起。事实上,我想在ListView(JavaFX)中显示对象,使它们可读,如String“N°:xxxx; Version:1”,序列化对象不是很美观也不可读。

所以我的最终解决方案更像是:

        listView.setCellFactory(new Callback<ListView<ProductDto>, ListCell<ProductDto>>() {
        @Override
        public ListCell<ProductDto> call(final ListView<ProductDto> productDtoListView) {
            return new ListCell<ProductDto>(){
                @Override
                protected void updateItem(final ProductDto productDto, final boolean b) {
                    if(productDto!=null){
                        setText(fromProductDtoToString(productDto));
                    }
                }
            };
        }
    });

这样,我将对象本身存储在ListView中,并且仍然可以显示代表该对象的相当美观的String。

感谢您的时间。

法比安

1 个答案:

答案 0 :(得分:3)

例如,您可以使用Jackson将对象转换为JSON,反之亦然。查看此文章How To Convert Java Object To / From JSON

如果需要,您也可以使用XML binding

通常,有许多序列化库/方法:

  • XStream(适用于XML但不适用于JSON)
  • Jackson(适用于JSON)
  • Jackson xml module(比XStream快)
  • Kryo(一种快速,紧凑的二进制序列化格式)
  • Smile(Jackson 1.6及更高版本附带的二进制格式)。
  • Java对象序列化。
  • SimpleXML似乎很稳定,运行速度是XStream的2倍,但需要更多的配置工作
  • YamlBeans
  • SnakeYAML

Jackson JSON,Kryo和Jackson Smile都比旧的Java对象序列化快得多,大约3倍到4.5倍。 XStream很慢。