无法读取JSON:无法识别的字段" _links" - Android REST HATEOAS客户端

时间:2015-06-12 12:27:11

标签: android json spring rest hateoas

我正在关注Android this tutorial for Android REST客户端,但我使用自己的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?

2 个答案:

答案 0 :(得分:1)

你没有&#34; _links&#34;你需要隐藏它或添加一个可以接受该对象的小类。

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

}

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

答案 1 :(得分:0)

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