使用Retrofit和Gson解析Json数据

时间:2017-10-16 07:24:36

标签: android retrofit2 gson

当我使用Retrofit进行API调用时,我收到了以下JSON响应。

enter image description here

现在我想将数据映射到模型中。最好的方法是什么?提前谢谢。

编辑:这是真正的JSON响应。

@receiver(post_save, sender=ItemFile)
@receiver(post_save, sender=Image)
def save_file_checksum(sender, instance, **kwargs):
    """
    Save a ckecksum for a file.
    """
    checksum = get_checksum(instance.file.path)
    existing_checksum = instance.checksum.first()
    if existing_checksum:
        existing_checksum.checksum = checksum
        existing_checksum.save()
    else:
        FileChecksum.objects.create(content_object=instance,
                                    checksum=checksum)

class ItemFile(models.Model):

    file = models.FileField(blank=False,
                            max_length=255,
                            upload_to=get_item_path,
                            verbose_name=_("file"))
    checksum = GenericRelation(FileChecksum)    

class Image(models.Model):
    file = models.ImageField(blank=False,
                                   verbose_name=_("Image"),
                                   max_length=255,
                                   upload_to=get_sheet_path)
    checksum = GenericRelation(FileChecksum)


class FileChecksum(models.Model):
    content_type = models.ForeignKey(ContentType,
                                     on_delete=models.CASCADE)

    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

    checksum = models.CharField(blank=True,
                                null=False,
                                max_length=255,
                                verbose_name=_("checksum"))

    def __str__(self):
        return "{} {}: {}".format(self.content_type,
                               self.content_object,
                               self.checksum)

1 个答案:

答案 0 :(得分:0)

  1. 为响应创建模型类。使用在线POJO生成器(http://www.jsonschema2pojo.org/).Set生成器选项中的注释样式作为GSON。

  2. 将模型类复制到项目中。

  3. 将模型类设置为Call for your service
  4. 的Template类
  5. Retrofit会将json映射到Call中定义的Model类,并在retrofit.Callback类的onResponse()方法中返回与body相同的内容。