我在响应中向我的资源发回一个对象数组,当数组只包含一个元素时,我无法循环数组,因为响应结果是单个对象而不是包含一个对象的数组。
从前端获得此代码:
function loadContent(sUsername, sPath){
arrayContentBeans = new Array();
var sUrl = "http://localhost:8080/crosscloudservice/services/RDF/retrieveContent?username="+sUsername+"&path="+sPath;
$.ajax({
type: "GET",
url: sUrl,
contentType: "application/json",
dataType: "json",
async: false,
success: function parse(resp, status, xhr) {
$("#message").html("STATUS: " + xhr.status + " " + xhr.statusText + "\n" + resp);
$("#message").hide();
$.each(resp, function() {
$.each(this, function(i, cb) {
arrayContentBeans.push(cb);
});
});
renderContent();
},
error: function(resp, status, xhr){
$("#message").html("ERROR: " + resp.status + " " + resp.statusText + "\n" + xhr);
$("#message").show();
}
});
}
任何人都可以告诉我如何强制JSON拥有一个数组,即使它只包含一个对象?
更新1
这是资源:
@GET
@XmlElement(name = "contentbean")
@Path("/retrieveContent")
@Produces(MediaType.APPLICATION_JSON)
public List<ContentBean> retrieve(@QueryParam("username") String Username, @QueryParam("path") String Path) {
ContentBean oContentBean = buildResult(Username, Path);
List<ContentBean> lContentBeans = new ArrayList<ContentBean>();
lContentBeans.add(oContentBean);
return lContentBeans;
}
更新2
我已经添加了应该将我的数组现在jackson-core-2.2.3.jar
和我的web.xml中的以下标记序列化的内容:
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.qcri.crosscloud.ws;org.codehaus.jackson.jaxrs</param-value>
</init-param>
但没有运气,它仍然表现得一样:(任何想法?
答案 0 :(得分:0)
如果要发送一个对象数组,那么请确保当只有一个元素要发送时将其序列化为数组,这样客户端将始终获得相同的数据结构