如果有人可以帮助我制定修复以下错误的策略,我将不胜感激,这种错误无法辨别;大多数时候没有错误,我在90%的时间里都很成功:
ERROR [org.jboss.resteasy.core.SynchronousDispatcher] Failed executing POST /toys/customer25/insert
org.jboss.resteasy.plugins.providers.jaxb.JAXBUnmarshalException: Unexpected end of stream
如何将此错误简单地记录到控制台?我想捕获此方法正在接收的JSON并找出导致此错误的原因。我可以在服务器日志中看到它。
我正在做的是以JSON格式将Toy
个对象的数组发布到服务器。也就是说,在客户端上,我将Toy
对象转换为Toy
JSON。我发送的字符串是这样的:[{"toyName":"buzzlightyear", "toyMaker":"mattel"}]
我的理解是,当我将JSON POST到jax-rs restful服务时,jax-rs实现(我正在使用RESTeasy 1.2)将以某种方式自动将该JSON字符串转换为java Toy
对象。 / p>
用于处理插入Toy
对象的POST的Java JAX-RS restful服务的代码是:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
@Path("toy/{customer}/insert")
public String insertToys(@PathParam("customer") String customer, List<Toy> toys);
如何记录/捕获JSON字符串的错误?在我看来,当调用insertToys()
方法时,系统正在处理JSON到Toy对象的转换。因此,弄清楚如何调试是很难的。
有人可以为我制定策略吗?我传递格式错误的JSON的可能性有多大,可能来自某些未转义的角色? Vs映射实体错了吗?谢谢!
答案 0 :(得分:1)
您的JSON不正确。 该方法接受List,因此您必须发送玩具对象数组:
[{"toyName":"buzzlightyear", "toyMaker":"mattel"}]
(注意括号)。
更多对象:
[{"toyName":"buzzlightyear", "toyMaker":"mattel"},{"toyName":"rex", "toyMaker":"mattel"}]