Программа Java занимает длинный список входов (параметров), немного сбивает и выплескивает некоторый результат.
Мне нужен способ правильно организовать эти параметры, поэтому во входном txt файле я хочу написать их следующим образом:
parameter1 = 12
parameter2 = 10
strategy1.parameter1 = "goofy"
strategy2.parameter4 = 100.0
Затем прочитайте этот txt файл, превратите его в объект Java, который я могу передать объектам, когда я их создаю.
Теперь у pyqtgraph есть ParameterTree
который удобен в использовании; есть что-то подобное в Java? Я уверен, что у других, должно быть, была такая же потребность, поэтому я не хочу изобретать велосипед.
(другие древовидные структуры также были бы прекрасны, конечно, я просто хотел, чтобы что-то легко читалось)
Один из способов - включить input.txt
в input.json
:
{
"parameter1": 12,
"parameter2": 10,
"strategy1": {
"parameter1": "goofy"
},
"strategy2": {
"parameter4": 100.0
}
}
Затем используйте Jackson для десериализации input.json
в один из следующих:
Map<String, Object>
, который вы можете перемещать по глубине, чтобы получить все ваши параметрыinput.json
, где будут находиться ваши параметрыJsonNode
, который будет корнем дерева(1) имеет то преимущество, что это легко, и вам не нужно создавать какой-либо класс для чтения параметров, однако вам нужно будет пересечь карту, опустить значения, которые вы получаете от нее, и вам нужно знать (ключи соответствуют именам атрибутов json object).
(2) имеет то преимущество, что все будет правильно набрано при десериализации; не нужно ниспровергать что-либо, поскольку каждый тип будет полем ваших собственных классов, которые представляют структуру параметров. Однако, если структура вашего файла input.json
изменилась, вам также необходимо будет изменить структуру ваших классов.
(3) является наиболее гибким из всех, и я считаю, что это вариант, который ближе всего к тому, что вы имеете в виду, тем не менее, это очень утомительно для работы, поскольку он слишком низкоуровневый. Пожалуйста, обратитесь к этой статье за дополнительной информацией.