【问题标题】:Could not read JSON: Unrecognized field "_links" - Android REST HATEOAS client无法读取 JSON:无法识别的字段“_links” - Android REST HATEOAS 客户端
【发布时间】:2015-08-28 11:06:59
【问题描述】:

我关注的是 Android REST 客户端的 this tutorial,但我没有使用问候服务,而是使用了自己的 REST HATEOAS 服务,该服务以这种格式返回 HAL+JSON:

"name" : "new task",
"description" : "this is new task",
"_links" : {
"self" : {
  "href" : "http://test/tasks/1"
},
"item" : {
  "href" : "http://test/tasks/1/item"
},
}

我在运行时收到此错误:

Could not read JSON: Unrecognized field "_links" 
(class com.test.mobile.model.Task), not marked as ignorable 
(3 known properties: "name", "item", "description"])

在 MainActivity 的这一行:

Task task = restTemplate.getForObject(url, Task.class);

我会复制/粘贴所有代码,但它与教程中的一个相同,除了它有这两个类而不是问候语:

public class Task {
private String name;
private String description;
private Item item;

public Task() {
}
/*getters and setters*/
}

public class Item {
private String name;
private Set<Task> tasks = new HashSet<Task>(0);

public Item() {
}
/*getters and setters*/
}

我正在寻找一些有关 HATEOAS 的教程或代码,但没有发现任何相关性。

如何修改我的 spring 代码以解析 HATEOAS _links?

【问题讨论】:

    标签: android json spring rest hateoas


    【解决方案1】:

    您没有“_links”字段,您需要忽略它或添加一个可以接受该对象的小类。

    // Add this and you will get error on "self" that is not mark as ignore:
    public class _links {
    
    }
    

    如何解决?只需添加另一个嵌套类。 请注意它很快变得丑陋,我刚刚解释了这个想法。

    【讨论】:

    • 我知道我可以添加 _links 类,但这似乎不是正确的方法,更多的是一种解决方法
    • @Miljac Nop,这只是一种差异风格,在 json.net 和 JS 中,您只需为“var”赋值。反正我对spring了解不多,但是Gson支持getter和setter,也许你可以做一个getter并在里面解析。 (无论如何,我希望有一个直接通过春天的方式,但我不太了解这个框架)。
    • 由于我实现了解析_links的自定义序列化程序,我会接受这个作为正确答案。
    【解决方案2】:

    真正的解决方案是 JsonIgnoreProperties 注解,现在写在这里https://stackoverflow.com/a/26614217/4173048

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 2020-11-29
      • 1970-01-01
      • 2019-10-07
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      相关资源
      最近更新 更多