Есть ли реализация дерева параметров в Java?

1

Программа Java занимает длинный список входов (параметров), немного сбивает и выплескивает некоторый результат.

Мне нужен способ правильно организовать эти параметры, поэтому во входном txt файле я хочу написать их следующим образом:

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

Затем прочитайте этот txt файл, превратите его в объект Java, который я могу передать объектам, когда я их создаю.

Теперь у pyqtgraph есть ParameterTree который удобен в использовании; есть что-то подобное в Java? Я уверен, что у других, должно быть, была такая же потребность, поэтому я не хочу изобретать велосипед.

(другие древовидные структуры также были бы прекрасны, конечно, я просто хотел, чтобы что-то легко читалось)

  • 2
    Ну, JSON является примером
Теги:
io
parameter-passing
tree
parameters

1 ответ

1
Лучший ответ

Один из способов - включить input.txt в input.json:

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

Затем используйте Jackson для десериализации input.json в один из следующих:

  1. Экземпляр " Map<String, Object>, который вы можете перемещать по глубине, чтобы получить все ваши параметры
  2. Экземпляр вашего собственного класса, который имитирует структуру input.json, где будут находиться ваши параметры
  3. Экземпляр JsonNode, который будет корнем дерева

(1) имеет то преимущество, что это легко, и вам не нужно создавать какой-либо класс для чтения параметров, однако вам нужно будет пересечь карту, опустить значения, которые вы получаете от нее, и вам нужно знать (ключи соответствуют именам атрибутов json object).

(2) имеет то преимущество, что все будет правильно набрано при десериализации; не нужно ниспровергать что-либо, поскольку каждый тип будет полем ваших собственных классов, которые представляют структуру параметров. Однако, если структура вашего файла input.json изменилась, вам также необходимо будет изменить структуру ваших классов.

(3) является наиболее гибким из всех, и я считаю, что это вариант, который ближе всего к тому, что вы имеете в виду, тем не менее, это очень утомительно для работы, поскольку он слишком низкоуровневый. Пожалуйста, обратитесь к этой статье за дополнительной информацией.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню