У меня есть словарь "данные". И мне нужно проанализировать пару ключ-значение для процесса. Конечный результат должен выглядеть следующим образом:
carcode=somename
params={minimum=3000, ignore=60, maximum_A=2500, maximum_B=500}
carcode=somename2
params={minimum=5000, ignore=100, maximum_A=3500, maximum_B=22500}
Я написал этот код, и он работает с жестко закодированным значением, а не с переменной "it", на которую я укажу в коде.
data = [
"a" : "A",
"b" : "B",
"c" : [
"somename":[
"z" : "Z",
"y" : "Y",
"params" :[
"minimum": "3000",
"ignore": "60",
"maximum_A": "2500",
"maximum_B": "500"
]
],
"somename2":[
"z" : "Z",
"y" : "Y",
"params" :[
"minimum": "5000",
"ignore": "100",
"maximum_A": "3500",
"maximum_B": "22500"
]
]
]
]
carcodes = Channel.from(data.c.keySet())
transform_carcodes = carcodes.flatMap { it -> [it] }
//HERE
results = transform_carcodes.flatMap { it -> [barcode: it, params: data.c."somename".params] }
//HERE
results.subscribe onNext: { println it }
В настоящее время вывод получает правильные ключи, но использует значение жестко закодированного ключа:
carcode=somename
params={minimum=3000, ignore=60, maximum_A=2500, maximum_B=500}
carcode=somename2
params={minimum=3000, ignore=60, maximum_A=2500, maximum_B=500}
Почему это не работает, когда я params: data.c.it.params
?
Iполучить вывод: Cannot get property 'params' on null object
Я попытался toString(it)
Также, как только я получу вывод, как я могу передать эту пару k / v процессу и порождать новый процессдля каждой пары к / в?
process{
container "python:3"
script:
"""
python3 some_file.py <key> <value>
"""
}
При запуске этот процесс должен появиться:
python3 some_file.py somename {minimum=3000, ignore=60, maximum_A=2500, maximum_B=500}
python3 some_file.py somename2 {minimum=3000, ignore=60, maximum_A=2500, maximum_B=500}