我想将JSON输出写入我的python模型。
我的模特:
class Thing(models.Model):
name = models.CharField(max_length=50)
serial = models.BigIntegerField()
san = models.CharField(max_length=50)
validfrom = models.CharField(max_length=50)
validto = models.CharField(max_length=50)
requester = models.CharField(max_length=50)
def __unicode__(self):
return self.name
这是我的JSON输出:
{
"Serial Number": "123132213",
"SAN": "hfdhfg",
"Valid From": " 04.08.2015 18:43",
"Valid To": " 03.08.2020 18:43",
"URL": "https://url.com/3212"
}
我正在执行一个命令,该命令会向我提供此输出,我会尝试保存到我的模型中。
# Execute command & read
stdin,stdout,stderr=ssh.exec_command(cmd)
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)
# Load JSON Output and save into model
jsonToPython = json.loads(resp)
thing_ser.validated_data['serial'] = jsonToPython['Serial Number']
thing_ser.validated_data['san'] = jsonToPython['Serial Number']
thing_ser.validated_data['validfrom'] = jsonToPython['Valid From']
thing_ser.validated_data['validto'] = jsonToPython['Valid To']
thing_ser.save()
我认为这不起作用,因为我的JSON不是一个字符串而json.loads除了一个字符串,所以我不确定什么是正确的方法。
答案 0 :(得分:0)
resp
应该是一个字符串。我不认为这是一个JSON问题。我不是ssh.exec_command()
方法的专家(我假设您正在使用paramiko?),但我认为您应该在resp
中获得有效的JSON字符串。 ..也许this SO question是相关的,特别是在建议您的cmd
存在问题时。如果cmd
是一个字符串,请尝试向其添加换行符,以确保您的命令实际上正在运行,而不仅仅是输入,然后坐在ssh终端中:
stdin, stdout, stderr = ssh.exec_command(cmd + '\n')
另外,您能否提供有关resp
变量的更多信息? print resp
做了什么?那么print type(resp)
呢?