放心JsonPath在JUnit测试中工作,但在应用程序(Weblogic)中部署时不工作
先来点背景知识。 我有一个部署在Weblogic中的应用程序。它从服务接收Json响应。我试图使用JsonPath来导航树,但遇到了一个不寻常的问题 我正在使用Maven构建/部署应用程序。 依赖关系:放心JsonPath在JUnit测试中工作,但在应用程序(Weblogic)中部署时不工作,junit,weblogic,rest-assured,rest-assured-jsonpath,Junit,Weblogic,Rest Assured,Rest Assured Jsonpath,先来点背景知识。 我有一个部署在Weblogic中的应用程序。它从服务接收Json响应。我试图使用JsonPath来导航树,但遇到了一个不寻常的问题 我正在使用Maven构建/部署应用程序。 依赖关系: <dependency> <groupId>com.jayway.restassured</groupId> <artifactId>json-path</artifactId> <version>1.8.1&l
<dependency>
<groupId>com.jayway.restassured</groupId>
<artifactId>json-path</artifactId>
<version>1.8.1</version>
</dependency>
这是我现在看到的
String miniJson = "{\"ChangeStatus\":{\"Code\":{\"value\":\"1002\"},\"Description\":{\"value\":\"Matched more then 10 records\"}}}";
JsonPath miniJsonPath = new JsonPath(miniJson);
String statusCode = miniJsonPath.getString("ChangeStatus.Code.value");
在JUnit中,这段代码有效,我可以成功地断言1002。
在应用程序中,在推送到weblogic之后,这个确切的代码片段不起作用。
它抛出了一个错误
任何想法都欢迎。
仅供参考,我们使用的是Weblogic 10.3.6
提前谢谢 我不是Weblogic方面的专家,但作为替代方案,您可以包括
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.0-rc1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.0-rc1</version>
</dependency>
希望一切顺利 我发现jsonpath依赖于antlr。 Weblogic也包括这个包,但我相信它是一个旧版本 我通过告诉Weblogic使用应用程序中包含的类修复了这个问题。 weblogic.xml
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
真的
您已经验证了您的json-path-1.8.1.jar是您部署的应用程序的一部分吗?堆栈跟踪是什么样子的?谢谢你的反馈。实际上,我正在应用程序的其他地方使用这些代码。我现在正在处理的作品比我展示的要复杂得多。JsonPath是迄今为止我发现的最有用的工具,可以处理我正在处理的Json的过度嵌套特性。我确实找到了解决方案,并将发布它。
`new ObjectMapper().readValue(miniJson, ChangeStatus.class)`
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>