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

J2EE 码拜 8年前 (2016-09-11) 2371次浏览
小弟最近学习使用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是方法返回之后框架自动做的,所以不知道该怎样才能解决这个问题cxf中关于json转换设置的问题?求各位指点cxf中关于json转换设置的问题

解决方案

40

用java转成JSON在返回

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明cxf中关于json转换设置的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)