【问题标题】:Android rest client - Hyphen names in JSON responseAndroid REST 客户端 - JSON 响应中的连字符名称
【发布时间】: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


【解决方案1】:

终于找到问题了。

问题是spring android rest 模块有依赖关系。尤其是第三方库。

让我贴一部分文档:

2.2.3 Object to JSON Marshaling Object to JSON marshaling in Spring for Android RestTemplate 需要使用第三方 JSON 映射库。 Spring 支持三个库 Android、Jackson JSON 处理器、Jackson 2.x 和 Google Gson。 虽然 Jackson 是一个众所周知的 JSON 解析库,但 Gson 库更小,这将导致 Android 应用程序更小 打包。

http://docs.spring.io/spring-android/docs/1.0.1.RELEASE/reference/html/rest-template.html#rest-template-message-converters粘贴​​p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多