从表示和 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);
}
我有一个工作网络服务,如下所示,它将 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);
}