cxf中关于json转换设置的问题

冬天的傻瓜 2016-08-20 10:11:31
小弟最近学习使用cxf+spring+hibernate搭建restful webservice。但是在测试方法的时候,发现返回的json字符串出现一个问题:当java bean类的list成员仅有一个元素的时候,转换成的json字符串不是数组的字符串,而是单个元素的字符串。当list成员包含多个元素的时候能够正常的转换成数组格式的字符串。

java类的成员定义如下:
@XmlRootElement
public class UserInfoServiceResponsePO {

// 执行结果
private Common.ServiceExeResult result;

// 返回消息
private List<String> msgList = null;

// 用户信息
private UserInfo userInfo;

.....getter and setter.....
}


返回对象的webservice方法示例:

@Override
public UserInfoServiceResponsePO userRegister(UserInfo userInfo) {
UserInfoServiceResponsePO registerRs = new UserInfoServiceResponsePO();
registerRs.setResult(ServiceExeResult.SUCCESS);
List<String> rsMsgList = new ArrayList<String>();


rsMsgList.add("用户注册成功。");
registerRs.setMsgList(rsMsgList);

return registerRs;
}


applicationContext.xml内相关的配置如下:

<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true" />
</bean>
</jaxrs:providers>


当UserInfoServiceResponsePO 实例内的msgList 内只有一个成员的时候,方法返回的json字符串内容如下:
{"msgList":"用户注册成功。","result":"SUCCESS"}
其中msgList对应的内容并不是数组的内容,而是变成了普通元素的格式。而当它包含两个元素(第二个元素是空字符串)的时候,能够被正常的转换:
{"result":"SUCCESS","msgList":["用户注册成功。",""]}

由于json是方法返回之后框架自动做的,所以不知道该怎么样才能解决这个问题?求各位指教
...全文
244 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
java竹雨 2016-08-22
  • 打赏
  • 举报
回复
用java转成JSON在返回
冬天的傻瓜 2016-08-22
  • 打赏
  • 举报
回复
引用 1 楼 u013439865 的回复:
用java转成JSON在返回
实在不行只能这样考虑了,不过感觉这样接口的设计很不好的感觉

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧