簡體   English   中英

使用Jersey獲取Web服務中的json對象

[英]Fetch json object in web service using Jersey

我正在將JSON對象發送到我的Web服務,該服務也具有內部JSON對象。 我無法在我的Web服務中獲取它。 我的客戶端代碼如下

var courseDetails = '{"UserId": "abc","CourseId": "C1","CourseDetails":{"Id": "_26_1","Name": "Group task test (revised)","Description": "Sample Description"}}';
    var obj = JSON.parse(courseDetails);    
    $http({
        method: 'POST',         
        url: 'rest/DB/Save',
        headers: {'Content-Type': 'application/json'},
        data : courseDetails,
        }).success(function (data){
            $scope.status=data;
        }).error(function(data, status, headers, config) {
            alert("error");
       });

在我的網絡服務中

    @POST
@Path("/Save")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
public String  autoSave(JSONObject obj) throws Exception{

    PersonalisationDao p = new PersonalisationImpl();
    System.out.println("Obj "+obj);
    String result = "failure";
    if(obj != null) {
        String userId = (String) obj.get("UserId");
        String courseId = (String) obj.get("CourseId");         
        String courseDetails =  (String) obj.get("CourseDetails");
        // Problem in fetching course Details 
        result = p.addDetails(userId, courseId, courseDetails);    
    }
    return result;
}

通常它應該是一個JSON對象,但是,它的拋出

SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String

我也嘗試過使用JSONObject進行轉換,但仍然無法正常工作。 有什么建議么?

通過首先轉換為LinkedHashMap來完成,然后最終轉換為字符串。

LinkedHashMap courseDetails =  (LinkedHashMap) obj.get("CourseDetails");
String jsonCourseString = new Gson().toJson(courseDetails, Map.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM