ตัวตรวจสอบความถูกต้องของ JSON ที่ออกแบบมาเพื่อความสง่างามและใช้งานง่าย
การตรวจสอบความถูกต้องของ JSON เป็นงานทั่วไปในการทดสอบ API อัตโนมัติ JSON-SCHEMA นั้นซับซ้อนและไม่ง่ายต่อการใช้งานดังนั้นฉันจึงสร้างห้องสมุดนี้เพื่อลดความซับซ้อนของกระบวนการตรวจสอบ JSON และทำให้การตรวจสอบความถูกต้องของ JSON นั้นสง่างามและสนุกสนานมากขึ้น
คุณสามารถติดตั้ง JSON Validator เวอร์ชันล่าสุดด้วยคำสั่งต่อไปนี้:
composer require rethink/json-validator:dev-master โดยค่าเริ่มต้น JSON Validator ส่งมอบเจ็ดประเภทในตัว:
นอกเหนือจากประเภทในตัวแล้วยังเป็นไปได้ที่จะกำหนดประเภทที่กำหนดเองของคุณผ่านวิธีการ defineType()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่เราสามารถกำหนดประเภทที่กำหนดเองผ่านอาร์เรย์หรือเรียกได้
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); ตัวอย่างนี้กำหนดประเภทที่กำหนดเองชื่อ User ซึ่งมีคุณสมบัติสี่ประการ ชื่อและเพศต้องเป็นสตริงอายุต้องเป็นจำนวนเต็ม แต่อนุญาตให้เป็นโมฆะและการจัดอันดับที่จำเป็นสำหรับจำนวนเต็มหรือบูลีนและอนุญาตให้เป็นโมฆะ
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); สิ่งนี้กำหนด UserCollection เป็นอาร์เรย์ของ User เพื่อกำหนดประเภทรายการคำจำกัดความของประเภทมีเพียงองค์ประกอบเดียวเท่านั้น
$ validator -> defineType ( ' timestamp ' , function ( $ value ) {
if ((! is_string ( $ value ) && ! is_numeric ( $ value )) || strtotime ( $ value ) === false ) {
return false ;
}
$ date = date_parse ( $ value );
return checkdate ( $ date [ ' month ' ], $ date [ ' day ' ], $ date [ ' year ' ]);
});นอกจากนี้ยังเป็นไปได้ที่จะกำหนดประเภทโดยใช้ callable ซึ่งมีประโยชน์ในการตรวจสอบข้อมูลบางอย่าง เช่นตัวอย่างข้างต้นกำหนดประเภทการประทับเวลาซึ่งต้องการข้อมูลที่จะเป็นวันที่ถูกต้อง
เราสามารถตรวจสอบประเภทโดยสองขั้นตอนต่อไปนี้:
use rethink jsv Validator ;
$ validator = new Validator ();
// $validator->defineType(...) Add your custom type if necessary $ matched = $ validator -> matches ( $ data , ' User ' );
if ( $ matched ) {
// Validation passed
} else {
$ errors = $ validator -> getErrors ();
} ตัวอย่างนี้จะตรวจสอบว่า $data ที่กำหนดนั้นตรงกับ User ประเภทหรือไม่หากการตรวจสอบล้มเหลวเราสามารถรับข้อความแสดงข้อผิดพลาดผ่านวิธีการ getErrors()
ในบางสถานการณ์เราอาจต้องการให้วัตถุตรงกับประเภทของเราอย่างเคร่งครัดเราสามารถใช้ strict mode เพื่อให้ได้สิ่งนี้ต่อไปนี้เป็นตัวอย่าง:
$ data = [
' name ' => ' Bob ' ,
' gender ' => ' Male ' ,
' age ' => 19 ,
' phone ' => null , // This property is unnecessary
];
$ matched = $ validator -> matches ( $ data , ' User ' , true ); // strict mode is turned on
var_dump ( $ matched ); // false is returned