带有 rest-plugin 的 Struts2:将 JSON 值映射到 ENUM

Posted

技术标签:

【中文标题】带有 rest-plugin 的 Struts2:将 JSON 值映射到 ENUM【英文标题】:Struts2 with rest-plugin: Map JSON value to ENUM 【发布时间】:2012-10-02 21:30:02 【问题描述】:

我正在使用带有 rest-plugin 的 Struts2 来构建 RESTful Web 服务。从 Java 对象序列化到 JSON 是一件轻而易举的事 - 一切都正确而精美地映射。接收 JSON 并尝试将其映射到 Java 对象是一个完全不同的问题。

我遇到了两个问题:

1) 无法将 JSON 数组转换为列表。改用 String[] 来“解决”它。

2) 有一个 ENUM 就是这样的 JSON:

"feature":"id":2,"enabled":true,"description":"one click transactions feature","type":"ONECLICK_OPTIN_TRANSACTIONS","countries":["SG"],"clientId":10

"type" : "ONECLICK_OPTIN_TRANSACTIONS" 应该映射到 Java 对象中的 ENUM,但当然,Struts2 barfs 代替。

有人成功做到了吗?

作为参考,这是异常的相关部分:

Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.ezmorph.MorphException: com.foo.bar.entity.FeatureType

谢谢, 肖恩

【问题讨论】:

有什么异常?发布完整的堆栈跟踪。 【参考方案1】:

不,JSON 中没有枚举之类的东西。当然,有一些解决方法,比如使用hash table,但根据技术进行思考总是好的。

【讨论】:

以上是关于带有 rest-plugin 的 Struts2:将 JSON 值映射到 ENUM的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 更好的带有点的 URL

带有 .action 的 Struts2 URL

使用带有struts2的spring social

在带有 DOJO 插件的 Struts2 应用程序中使用 dijit 小部件有啥特殊要求吗?

Struts2 的action里的方法不能带有参数

Struts2 的action里的方法不能带有参数