小弟最近学习使用cxf+spring+hibernate搭建restful webservice。但是在测试方法的时候,发现返回的json字符串出现一个问题:当java bean类的list成员仅有一个元素的时候,转换成的json字符串不是数组的字符串,而是单个元素的字符串。当list成员包含多个元素的时候能够正常的转换成数组格式的字符串。
java类的成员定义如下:
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是方法返回之后框架自动做的,所以不知道该怎样才能解决这个问题
解决方案
40
用java转成JSON在返回