0

我想要一种可以将对象(带有几个参数 String 或 int)转换为 String 的方法,更重要的是,将该 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 表示对象。

谢谢你的时间。

法比安

4

1 回答 1

3

例如,您可以使用Jackson将对象转换为JSON,反之亦然。查看这篇文章如何将 Java 对象转换为/从 JSON

如果需要,也可以使用XML 绑定

一般来说,有许多序列化库/方法:

  • XStream(适用于 XML,但不适用于 JSON)
  • 杰克逊(用于 JSON)
  • Jackson xml 模块(比 XStream 更快)
  • Kryo(一种快速、紧凑的二进制序列化格式)
  • 微笑(Jackson 1.6 及更高版本附带的二进制格式)。
  • Java 对象序列化。
  • SimpleXML看起来很可靠,运行速度是 XStream 的 2 倍,但需要更多的配置工作
  • YamlBeans
  • 蛇YAML

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

于 2013-07-10T08:41:07.337 回答