2016-05-25 90 views
1

我有一個正在工作的webservice,如下所示,它將返回JSON格式的double值,例如現在{"PMC":17.34}從表示中獲取JSON並返回字符串值

@Override 
@Post("JSON") 
public Representation post(Representation entity) throws ResourceException 
{ 
    JsonObjectBuilder response = Json.createObjectBuilder(); 

    try { 
     String json = entity.getText(); // Get JSON input from client 
     Map<String, Object> map = JsonUtils.toMap(json); // Convert input into Map 
     double result = matrix.calculatePMC(map); // Calculate PMC value 
     response.add("PMC", result); 
    } catch (IOException e) { 
     LOGGER.error(this.getClass() + " - IOException - " + e); 
     getResponse().setStatus(Status.SERVER_ERROR_INTERNAL); 
    } 

    return new StringRepresentation(response.build().toString());  
} 

,我想改變程序只返回的雙重價值,即17.34,所以我修改我的程序如下:

@Post 
public double post(Response response) 
{ 
    double result = 0; 

    try { 
     String json = response.getEntity().getText(); //Get JSON input from client 
     Map<String, Object> map = JsonUtils.toMap(json); // Convert input into Map 
     result = matrix.calculatePMC(map); // Calculate PMC value 
    } catch (IOException e) { 
     LOGGER.error(this.getClass() + " - IOException - " + e); 
     getResponse().setStatus(Status.SERVER_ERROR_INTERNAL); 
    } 

    return result;  
} 

當我運行此我得到一個415 Unsupported Media Type錯誤。我錯過了什麼?

+1

請改變'@Post公共雙崗(響應響應)''來@Post(「JSON」)公共雙postImpl(JSON字符串)',並告訴我們你得到了什麼。 –

+0

感謝@AbhishekOza爲我指出了正確的方向! – Maruli

回答

0

錯誤的程序要求,它應該返回一個字符串值(雙)。以下是我最後的工作程序:

@Post 
public String post(String json) 
{ 
    double result = 0; 
    Map<String, Object> map = JsonUtils.toMap(json); // Convert JSON input into Map 
    result = matrix.calculatePMC(map); // Calculate PMC value 

    return String.valueOf(result); 
}