从表示和 return 字符串值中捕获 JSON

Capture JSON from representation and return String value

我有一个工作网络服务,如下所示,它将 return JSON 格式的双精度值,例如{"PMC":17.34}

@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());       
}

现在,我想将程序更改为 return 只是双精度值,即 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 错误。我错过了什么?

看错了程序要求,应该return一个字符串值(双精度)代替。以下是我最终的工作程序:

@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);
}