gpt4 book ai didi

java - 如何返回具有 @Produces(MediaType.APPLICATION_JSON) 的响应字符串?

转载 作者:行者123 更新时间:2023-11-30 06:10:51 29 4
gpt4 key购买 nike

@GET
@Path("/paises/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response findCuntryList(@PathParam("id")int id){
try{
ArrayList<Country> lista = new ArrayList<>();
for(int i=0; i<10 ;i++){
Country c = new Country();
c.setId(i);
c.setName("country"+i);
c.setCode("countryIsoCode"+i);
c.setRegion("region"+i);
lista.add(c);
}

Country co = lista.stream().filter(x -> x.getId()==id).findAny().get();
if(id > lista.size()-1) throw new Exception("That id is not correct");
return Response.ok(co).build();
}catch(Exception e){

return Response.status(404).entity(e.getMessage()).build();
}
}

当我没有异常时,我想返回一个 json,但是当我有异常时,我需要返回一个带有异常消息的字符串,但 json 解析出现此错误。

最佳答案

单引号字符串是有效的 JSON。所以你可以使用:

return Response.status(404).entity("\"" + e.getMessage() + "\"").build();
<小时/>

但是我建议您返回 JSON 对象。它使您可以灵活地返回有关错误的额外元数据。

您可以使用Map<String, Object> :

Map<String, Object> errorDetails = new HashMap<>();
errorDetails.put("message", e.getMessage());
return Response.status(404).entity(errorDetails).build();

或者为错误详细信息创建一个类:

public class ErrorDetails {

private String message;

...
}
ErrorDetails errorDetails = new ErrorDetails;
errorDetails.setMessage(e.getMessage());
return Response.status(404).entity(errorDetails).build();
<小时/>

要报告 HTTP API 中的问题,请查看 RFC 7807 .

关于java - 如何返回具有 @Produces(MediaType.APPLICATION_JSON) 的响应字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269516/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com