No message body writer has been found for class com.alibaba.fastjson.JSONObject, ContentType: */*

1:當使用 cxf 發佈服務時,要求返回值類型爲xml,或者json等前端

@Path("/searchProductByText") @GET @Produces({"application/xml", "application/json"}) JSONObject productSearch(@QueryParam("text") String text);

可是 cxf不支持解析  JSONObject 等對象java

進行訪問時將會返回    No message body writer has been found for class com.alibaba.fastjson.JSONObject, ContentType: */*json

2:解決方法,定義一個pojo,裏面包含 JSONObject  引用。將返回的JSONObject包含在 自定義的 POJO中,使用註解將pojo定義爲能被解析爲xml形式等。app

    

package com.search.pojo; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import javax.xml.bind.annotation.XmlRootElement; //@JsonInclude(JsonInclude.Include.NON_NULL)//不包含有null值的字段,即字段值爲null的轉換爲json字符串時會被省略
@XmlRootElement(name="MyJSONObject") public class MyJSONObject { JSONObject jsonObject; public JSONObject getJsonObject() { return jsonObject; } public void setJsonObject(JSONObject jsonObject) { this.jsonObject = jsonObject; } }

3:在實現類中,返回對象變爲 pojothis

     

MyJSONObject myJSONObject=new MyJSONObject(); myJSONObject.setJsonObject(jsonObject); return myJSONObject;

4:接口 方法 返回 也變爲 pojourl

    

@Path("/searchProductByText") @GET @Produces({"application/xml", "application/json"}) MyJSONObject productSearch(@QueryParam("text") String text);

5  能夠返回值了。spa

 6:前端接到響應體中的xml,能夠轉化爲jsoncode

  

httpResponse = httpUtil.HttpGet(requestParamMap, url); HttpEntity entity = httpResponse.getEntity(); String s = EntityUtils.toString(entity); //將返回的xml字符串形式轉化爲json格式
            org.json.JSONObject xmlJSONObj = XML.toJSONObject(s); jsonObject = (JSONObject) JSON.parse(xmlJSONObj.toString());
相關文章
相關標籤/搜索