将JSON输出写入模型

时间:2017-08-08 12:22:06

标签: python json serialization

我想将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除了一个字符串,所以我不确定什么是正确的方法。

1 个答案:

答案 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)呢?