Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 有没有办法解决Jackson中的反序列化问题_Json_Spring_Jackson - Fatal编程技术网

Json 有没有办法解决Jackson中的反序列化问题

Json 有没有办法解决Jackson中的反序列化问题,json,spring,jackson,Json,Spring,Jackson,我的SpringBootWeb应用程序通过代理类型的应用程序(也被我们项目中的其他应用程序使用)在内部向另一个SpringBootMicro服务发送API请求,如下图所示 问题在于杰克逊的反序列化。在Webapp中,POJO使用ObjectMapper转换为JSON字符串,请求在请求正文中作为string发送。代理首先接收请求,并且未触及该字符串请求正文。但它会根据请求执行其他工作。当请求再次被绕过到我的micro服务时,以及当我将此字符串请求反序列化为我所需的POJO类型时,就会出现问题。这一

我的SpringBootWeb应用程序通过代理类型的应用程序(也被我们项目中的其他应用程序使用)在内部向另一个SpringBootMicro服务发送API请求,如下图所示

问题在于杰克逊的反序列化。在Webapp中,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字符串中有一个换行符