【问题标题】:Patching with Retrofit - ID property only使用 Retrofit 进行修补 - 仅限 ID 属性
【发布时间】:2015-02-26 09:05:58
【问题描述】:

我正在我的应用程序中使用 Retrofit,它可以很好地管理 API 调用,并根据我的需要支持 GET 和 PATCH。

鉴于以下 JSON:

"fruit_set": [
    {
        "id": 2, 
        "fruit": {
            "id": 1, 
            "name": "Apple", 
            "desc": ""
        }, 
        "source": 2, 
        "inventory": 8.0
    }, 
    {
        "id": 6, 
        "fruit": {
            "id": 2, 
            "name": "Mango", 
            "desc": "delicious"
        }, 
        "source": 2, 
        "inventory": 15.0
    }]

暂时忽略名字。

我已经为 FruitSet 和 Fruit 设置了一个带有所需 getter/setter 的 PoJo。 FruitSet.Fruit 被定义为 List 并通过 GET 调用很好地填充。我的问题在于 PATCH。

在这种情况下,Fruit 是参考数据,因此我只需要在将 Fruit.id 分配给我的 FruitSet PoJo 时插入它。

我能否指示 Retrofit 不需要将 Fruit 写入数据库表,只需将 Fruit.id 写入数据库表。我希望 Retrofit 足够聪明地做到这一点?

基本上我在 PATCH 时想要这个 JSON 结构:

    "fruit_set": [
    {
        "id": 2, 
        "fruit": 1, 
        "source": 2, 
        "inventory": 8.0
    }, 
    {
        "id": 6, 
        "fruit": 2, 
        "source": 2, 
        "inventory": 15.0
    }]

有什么想法吗?

【问题讨论】:

  • 你可以通过解析获取任何你想要的东西。告诉我你正在解析的代码。
  • 提取没问题,我可以检索数据没有问题。当我想 PATCH 一个对象时,就会出现我发现的问题。 (我已经编辑了我的问题以说明我想要修补的 JSON)
  • Retrofit 不会做任何这些。您必须发出一个发布请求,并在该请求中以您想要的方式发送数据。
  • 它会在与 OkHttp 库一起使用时执行 PATCH,因此我可以毫无问题地执行 PATCH。

标签: android json orm retrofit


【解决方案1】:

对于那些寻找的人,我实现了一个自定义 Gson 序列化程序,它只输出 ID 而不是整个 Fruit 对象。这篇文章真的很有帮助,尤其是在底部:

http://www.javacreed.com/gson-serialiser-example/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2014-03-05
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多