Передача json через командную строку - PullRequest
0 голосов
/ 04 мая 2020

Я передаю следующее json через командную строку как

$python new.py {'scenarioId':'null','scenarioName':'EC_02','scenarioDesc':'EC_02','riskEngine':'null'}

, и когда я запускаю следующее:

import sys
import json
str_json = sys.argv[1].replace("'", '"')

try:
    d = json.dumps(str_json)
    dat = json.loads(b)
    print("Stress JSON is as follows \n",dat)
except json.decoder.JSONDecodeError:
    print("Not a valid JSON")

print(dat['scenarioId'])

Это допустимый json, но я получаю ошибку TypeError: строковые индексы должны быть целыми числами для последней строки. Он отлично работает, когда я инициализирую его как str_ json в самом коде. Как это решить?

1 Ответ

0 голосов
/ 04 мая 2020

В вашем коде, когда вы используете a_json = json.loads(b), здесь тип переменной b все еще является строкой, преобразуйте ее в json: a_json = json.loads(json.loads(b))

Код:

import sys
import json
str_json = sys.argv[1].replace("'", '"')
try:
    b = json.dumps(str_json)
    a_json = json.loads(json.loads(b))
    print("Stress JSON is as follows \n",a_json)
except json.decoder.JSONDecodeError:
    print("Not a valid JSON")


print(a_json['scenarioId'])

Вывод:

Stress JSON is as follows 
 {'scenarioId': 'null', 'scenarioName': 'EC_02', 'scenarioDesc': 'EC_02', 'riskEngine': 'null'}
null
...