升级Json-path至2.8版本后出现JSONParser等类型无法解析编译错误
问题原因及解决方案
问题根源
json-path 2.8.0版本对依赖管理做了调整:原本作为compile级别的net.minidev:json-smart依赖(你的代码中JSONObject、JSONParser类就来自这个包),被改为了provided scope。这意味着主代码编译时Maven不会自动引入该依赖,而测试代码因为json-path的测试依赖链中默认包含了这个库,所以不受影响。
解决方案
方案1:显式添加json-smart的compile依赖
在你的pom.xml中手动加入net.minidev:json-smart的compile依赖,版本可与json-path 2.8.0匹配的版本保持一致(推荐用2.4.11,这是json-path 2.8.0默认依赖的版本):
<dependency> <groupId>net.minidev</groupId> <artifactId>json-smart</artifactId> <version>2.4.11</version> <scope>compile</scope> </dependency>
方案2:改用json-path原生API替代直接依赖json-smart
如果不想额外引入依赖,可以调整代码,使用json-path自身的API来解析JSON,避免直接使用net.minidev.json下的类:
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.ReadContext; import java.util.Map; public static Map<String, Object> convertJSONStr2Obj(String jsonStr) { ReadContext ctx = JsonPath.parse(jsonStr); return ctx.read("$"); // 读取整个JSON对象,返回Map类型(与JSONObject本质一致) }
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

