调用Opis\JsonSchema\Schema::fromJsonString()报未定义方法错误如何解决?
Opis JsonSchema 报错排查
故障原因
- 核心问题是Opis JsonSchema版本API不兼容:
Schema::fromJsonString()仅在1.x版本中提供,2.0及以上版本重构了校验逻辑,直接移除了该静态方法,所以会抛出未定义方法错误。 - 你可以先执行命令查看当前安装的版本:
composer show opis/json-schema
如果返回的版本号≥2.0,就可以确定是版本变更导致的问题。
修复方案
方案1:兼容现有代码,降级到1.x版本
执行composer命令指定版本安装即可:composer require opis/json-schema:^1.0
安装完成后原有代码无需修改即可正常运行。
方案2:使用2.x版本新API,修改现有代码
2.x版本不再需要提前调用Schema类的方法加载schema,直接传递json_decode后的schema对象给校验器即可,修改后的代码示例:
$data1 = json_decode($data); // 直接解析schema为对象即可,不需要调用Schema类的方法 $schema = json_decode(file_get_contents('JSONSchema_CC.json')); $validator = new \Opis\JsonSchema\Validator(); /** @var \Opis\JsonSchema\ValidationResult $result */ $result = $validator->validate($data1, $schema); // 校验结果处理逻辑不变 if ($result->isValid()) { // 校验通过 } else { $error = $result->error(); // 处理错误 }
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

