Я написал проверку схемы JSON для моего JSON файла. Мой файл состоит из массива объектов питания, содержащих Food_Id, Food_Name, Food_Description, Food_Type и Food_Price (Rs). Однако я получаю ошибку, о которой понятия не имею. Можете ли вы помочь мне?
JSONSchemaFoodItems. json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://api.example.com/food.json#",
"type": "object",
"properties": {
"Foods": {
"type": "array",
"minItems": 1,
"uniqueitems": true,
"items": {
"type": "object",
"properties": {
"Food_Id": {
"type": "integer",
"minimum":1
},
"Food_Name": {
"type": "string",
"minLength": 1,
"maxLength":255
},
"Food_Description": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"Food_Type": {
"type": "array",
"items":{
"type":"string",
"enum":["Starters","Main C
ourse","Soups","Beverages","Desserts",
"Salads"]
}
},
"Food_Price(Rs)": {
"type": "integer",
"minimum": 1,
}
},
"required": ["Food_Id", "Food_Name", "Food_Description",
"Food_Type","Food_Price(Rs)"],
"additionalProperties": false
}
}
},
"additionalProperties": false
}
buildFoodItems JSON. php
<?php
use Opis\JsonSchema\{
Validator, ValidationResult, ValidationError, Schema
};
require 'vendor/autoload.php';
require_once('includes/db_connect.php');
$sQuery = "SELECT Food_Id, Food_Name, Food_Description, Food_Type,
`Food_Price(Rs)` FROM food";
if(isset($_GET['Food_Type']) && is_string($_GET['Food_Type']))
{
$foodCat = $_GET['Food_Type'];
$sQuery = $sQuery . " WHERE Food_Type = '$foodCat' ";
}
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result = $conn->query($sQuery);
// create JSON object
$array_result = $result->fetchAll(PDO::FETCH_ASSOC);
$data = json_encode(array('Foods'=>$array_result), JSON_NUMERIC_CHECK);
$data1 = json_decode($data);
$schema =
Schema::fromJsonString(file_get_contents('JSONSchemaFoodItems.json'));
$validator = new Validator();
/** @var ValidationResult $result */
$result = $validator->schemaValidation($data1, $schema);
if ($result->isValid()) {
//echo '$data is valid', PHP_EOL;
header('Content-Type: application/json');
echo $data;
} else {
/** @var ValidationError $error */
$error = $result->getFirstError();
echo '$data is invalid', PHP_EOL;
echo "Error: ", $error->keyword(), PHP_EOL;
echo json_encode($error->keywordArgs(), JSON_PRETTY_PRINT), PHP_EOL;
}
?>
ОШИБКА:
Неустранимая ошибка: Uncaught Opis \ JsonSchema \ Exception \ InvalidSchemaException: схема должна быть объектом или логическим значением, NULL, указанным в C: \ xampp \ htdocs \ trial2 \ vendor \ opis \ json -schema \ src \ Schema. php: 63 Трассировка стека: # 0 C: \ xampp \ htdocs \ trial2 \ vendor \ opis \ json -schema \ src \ Schema. php (201): Opis \ JsonSchema \ Schema -> __ construct (NULL, NULL) # 1 C: \ xampp \ htdocs \ trial2 \ buildFoodItems JSON. php (27): Opis \ JsonSchema \ Schema :: fromJsonString ('{\ r \ n "$ схема ... ') # 2 {main} добавляется в C: \ xampp \ htdocs \ trial2 \ vendor \ opis \ json -schema \ src \ Schema. php в строке 63