【发布时间】:2014-01-23 14:49:17
【问题描述】:
我在使用漂亮的 spring android rest 客户端模块时遇到了问题。 我正在为其余客户端创建响应类型,以便能够将响应解组为对象。但后来我意识到我做不到。 响应包含连字符字段名称,这会阻止我创建具有此字段名称的类。
以下是 JSON 响应的示例:
{
....
created-by: "Wikipedia",
last-updated-by: "Wikipedia",
create-date: "2010-11-21 13:55:37",
last-update-date: "2010-11-21 13:55:37",
...
}
所以在这种情况下我不能上课,例如:
class ResponseType{
private String created-by; //NOT A VALID VARIABLE NAME
...
}
我试图从许多论坛获得答案,但我未能找到解决方案。 我发现很多人建议在该字段上添加注释,例如:
@JsonProperty("created-by")
private String created_by;
但是没有用,因为spring android rest模板没有这个注解。
我想要实现的是:
String url = "http://mymemory.translated.net/api/get?q=accidentally&langpair=en|hu";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
ResponseType responseType = restTemplate.getForObject(url, ResponseType.class, "Android");
我很好奇解决方案是什么。期待答案!
【问题讨论】:
-
这不是有效的 JSON ...不是因为连字符而是缺少撇号
{ created-by: "Wikipedia", last-updated-by: "Wikipedia", create-date: "2010-11-21 13:55:37", last-update-date: "2010-11-21 13:55:37" }无效,{ "created-by": "Wikipedia", "last-updated-by": "Wikipedia", "create-date": "2010-11-21 13:55:37", "last-update-date": "2010-11-21 13:55:37" }有效 -
@Selvin:我正在使用此服务调用(检查响应):mymemory.translated.net/api/…
-
如果你使用 jackson json 库并使用 MappingJacksonHttpMessageConverter 应该可以工作......并记住“create-by”!=“created-by”
-
那么你是说我可以将jackson json库和spring android rest客户端一起使用?顺便说一句,我不想使用任何其他库。这里的 create-by != created-by 只是一个错字。
-
@FYI:我已经用“我想要实现的目标”部分更新了我的问题
标签: java android json spring rest