Json 有没有办法解决Jackson中的反序列化问题
我的SpringBootWeb应用程序通过代理类型的应用程序(也被我们项目中的其他应用程序使用)在内部向另一个SpringBootMicro服务发送API请求,如下图所示 问题在于杰克逊的反序列化。在Webapp中,POJO使用Json 有没有办法解决Jackson中的反序列化问题,json,spring,jackson,Json,Spring,Jackson,我的SpringBootWeb应用程序通过代理类型的应用程序(也被我们项目中的其他应用程序使用)在内部向另一个SpringBootMicro服务发送API请求,如下图所示 问题在于杰克逊的反序列化。在Webapp中,POJO使用ObjectMapper转换为JSON字符串,请求在请求正文中作为string发送。代理首先接收请求,并且未触及该字符串请求正文。但它会根据请求执行其他工作。当请求再次被绕过到我的micro服务时,以及当我将此字符串请求反序列化为我所需的POJO类型时,就会出现问题。这一
ObjectMapper
转换为JSON字符串,请求在请求正文中作为string
发送。代理首先接收请求,并且未触及该字符串
请求正文。但它会根据请求执行其他工作。当请求再次被绕过到我的micro服务时,以及当我将此字符串请求反序列化为我所需的POJO类型时,就会出现问题。这一点如下所示
//内部OncePerRequestFilter#doFilterInternal
safeParseJSON(objectMapper,request.getInputStream(),MyPojo.class);//无法分析。
safeParseJSON(objectMapper,safeParseJSON(objectMapper,httpServletRequest.getInputStream(),String.class),MyPojo.class)//已成功解析
获取类似于jackson.databind.JsonMappingException的异常:无法构造…的实例,没有字符串参数构造函数/工厂方法从字符串值(“”)反序列化。
。请帮我做这个
public static T safeParseJSON(ObjectMapper ObjectMapper,InputStream InputStream,Class targetType){
试一试{
返回objectMapper.readValue(inputStream,targetType);
}捕获(IOEX异常){
抛出新的RuntimeException(String.format(“无法解析JSON负载-%s”,例如.getMessage()),例如);
}
}
您是否已检查代理是否正在转发正文?从错误中可以看出,您似乎试图解析一个空字符串,而不是一个JSONDid。同样,您应该将InputStream读入字符串并打印结果,然后将其发布到此处。看这个,这是非常巨大的JSON。如果我在这里发帖,那会很难看。问题是直接解析不起作用,所以您是说您正在微服务中接收Spring引导应用程序发送的JSON。在上面打印的字符串值中,整个值是否打印在一行上?可能在第一行或JSON字符串中有一个换行符