我目前正在开发一种软件,用户可以将复杂的对象层次结构定义为设置。 此设置对象还将为其他开发人员提供接口作为API。 现在我想存储这些设置并重新加载它。
我目前正在考虑采用不同的方法来做到这一点,但我的解决方案都不是"好的"在我看来。
主要目标应为:
我知道很多人在开发过程中遇到过相同或类似的问题。
那么你的解决方案是什么?您使用了哪个框架?为什么?
我提出的所有解决方案要么不依赖,要么是庞大的配置,要么是代码很多。
所以我期待着从你们所有人那里获得一些关于这个主题的新观点。
感谢。
答案 0 :(得分:1)
我建议指定一个XSD并使用JAXB生成Java类,并编组和解组基于XML的设置文件。
确保根标记包含XSD的版本。如果需要支持多个版本,可以使用StAX首先读取版本并确定正确版本的JAXB类。
答案 1 :(得分:1)
我会推荐XStream。没有任何配置,它具有与java.io.*ObjectStream
类似的功能,但输出XML而不是二进制blob。您只需要为类名添加一些别名,以使文件更具可读性。
答案 2 :(得分:0)
有关详细信息,我现在如何解决这个问题:
我使用Gson将对象层次结构序列化为JSON。添加了Generic TypeAdapter,用于序列化和反序列化所有已知接口。此适配器将类名保存到JSON对象中,并在反序列化时构造此类。除了为每个使用的接口注册此TypeAdapter之外,不需要其他配置。
为了使其可靠,我将向项目添加单元测试,以反序列化完整的可能配置。因此,对代码的任何更改都将破坏测试。
通过这种方式,我可以实现上述所有要点。
我希望这对任何人都有帮助。