У меня есть рабочий процесс, в котором вывод одного процесса вводится в следующий.
Процесс A выводит JSON.
Входные данные процесса B должны быть JSON.
Однако, поскольку я передаю JSON в качестве аргумента командной строки, он становитсястрока.
Эта команда ниже не находится под моим контролем. Он автоматически генерируется Nextflow, и поэтому мне нужно найти решение (не обязательно JSON), но мне нужно получить доступ к этим значениям (учитывая, что это, по сути, просто строка)
python3.7 typing.py '{'id': '3283', 'code': '1234', 'task': '66128b3b-3440-4f71-9a6b-c788bc9f5d2c'}'
typing.py
def download_this(task_as_string):
print("Normal")
print(task_as_string)
first = json.dumps(task_as_string)
print("after json.dumps")
print(first)
second = json.loads(first)
print("after json.loads")
print(second)
print(type(second))
if __name__ == "__main__":
download_this(sys.argv[1])
Я думал, что если сделать json.dumps
, а затем json.loads
, это сработает, но это не сработает.
Выходные данные
Normal
{id: 3283, code: 1234, task: 66128b3b-3440-4f71-9a6b-c788bc9f5d2c}
after json.dumps
"{id: 3283, code: 1234, task: 66128b3b-3440-4f71-9a6b-c788bc9f5d2c}"
after json.loads
{id: 3283, code: 1234, task: 66128b3b-3440-4f71-9a6b-c788bc9f5d2c}
<class 'str'>
И если я делаю print(second["task"])
, я получаю строковые индексы должны быть целыми числами
Traceback (most recent call last):
File "typing.py", line 78, in <module>
download_this(sys.argv[1])
File "typing.py", line 55, in download_typed_hla
print(second["task"])
TypeError: string indices must be integers
Так что он никогда не преобразовывался в dict впервое место. Любые идеи, как я могу обойти эту проблему?