Java中是否有参数树实现?

时间:2015-02-08 23:58:28

标签: java parameters io tree parameter-passing

Java程序需要一长串输入(参数),稍微搅拌并吐出一些输出。

我需要一种以理智的方式组织这些参数的方法,所以在输入txt文件中我想写这样的:

parameter1 = 12
parameter2 = 10
strategy1.parameter1 = "goofy"
strategy2.parameter4 = 100.0

然后读取这个txt文件,把它变成一个Java对象,当我实例化它时,我可以将它传递给对象。

我现在pyqtgraph有ParameterTree,方便使用; Java中有类似的东西吗?我相信其他人必须有同样的需要所以我不想重新发明轮子。

(其他树形结构也可以,当然,我只想要一些易于阅读的内容)

1 个答案:

答案 0 :(得分:1)

一种方法是将input.txt变为input.json

{
    "parameter1": 12,
    "parameter2": 10,
    "strategy1": {
        "parameter1": "goofy"
    },
    "strategy2": {
        "parameter4": 100.0
    }
}

然后使用Jacksoninput.json反序列化为其中一个:

  1. Map<String, Object>实例,您可以深入导航以获取所有参数
  2. 您自己的某个类的实例,它模仿input.json的结构,您的参数将驻留在
  3. 将成为树的根的JsonNode实例
  4. (1)的优势在于它很简单,您不必创建任何类来读取参数,但是您需要遍历地图,向下转换您获得的值从中,你需要提前知道密钥(密钥匹配json对象的属性名称)。

    (2)的优点是一切都可以在反序列化时正确输入;无需向下转换任何内容,因为每个类型都是您自己的类的字段,表示参数的结构。但是,如果input.json文件的结构发生了变化,您还需要更改类的结构。

    (3)是最灵活的,我相信它是最接近你的想法的选择,但是它是最繁琐的,因为它太低了-水平。有关详细信息,请参阅this article