1. 问题
用json schema校验json数据的时候,遇到报错:
java.lang.NoSuchMethodError: org.json.JSONObject.toMap()Ljava/util/Map;
at org.everit.json.schema.loader.SchemaLoader$SchemaLoaderBuilder.schemaJson(SchemaLoader.java:182)
at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:254)
at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:240)
at com.alibaba.campaign.util.JSONUtil.validateJSONWithSchema(JSONUtil.java:56)
2. 解决办法
检查发现是由于maven饮用的org.json包太老,所以更新maven依赖:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
除了更新依赖,我还删除了旧的包,我的工程在idea中,删除方式如下:
- 菜单栏 File > Project Structure > 选择Libraries
- 找到较老的包,选择顶部的“-”号删除
- 点击“OK”退出
下图仅是一个参考,我的工程中原来的包实际版本是:20140107
3. 参考
问题参考链接: