اعتبارسنجی متغیرهای JSON
دادههای json یکی از انواع دادههای قابل انتقال بین برنامهها هست؛ به جز این نوع فایل از دادههای xml هم برای همین کار استفاده میکنند. خوانایی دادههای json و کار با آنها به دلیل ساده بودن این نوع داده را پر کاربرد کرده است. این نوع داده به علت مصرف حافظهی کمتر از xml در تبادل اطلاعات داخل برنامهها برای برنامه نویسان محبوبیت بیشتری دارد. در این نوشته با نحوهی اعتبارسنجی دادههای json به کمک توابع php در کنار شما هستیم.
قبل از مطالعهی این نوشته میتوانید تفاوتهای xml و json را به طور کامل مطالعه کنید.
اعتبارسنجی متغیرهای JSON
اعتبارسنجی صحت دادهی json در php
دادههای json در زبان برنامه نویسی پی اچ پی در حال معمول حاصل از خواندن فایل یا خواندن دادهها با کمک apiها یا صفحات دیگر است. بعد از خواندن این فایلها برای پردازش نیاز دارید تا قبل از شروع عملیات پردازش بررسیهای لازم را انجام دهید تا ببینید دادهی دریافتی شما اصلا فرمت قابل پردازش json را دارد یا خیر؟! برای رسیدن به این هدف در زبان برنامه نویسی پی اچ پی توابع آماده وجود ندارد و ما با کمک ترکیب توابع شرطی پی اچ پی یک تابع برای شما آماده کردهایم تا در کنار برنامهی خود به سادگی استفاده کنید.
اعتبارسنچی متغیرهای JSON
برای اعتبارسنجی متغیرهای json از قطعه کد زیر استفاده کنید:
<?php
public function isJson($jsonData) {
return ((is_string($jsonData) &&
(is_object(json_decode($jsonData)) ||
is_array(json_decode($jsonData))))) ? true : false;
}
?>
نکته: این کد یک تابع php است که میتواند در کنار برنامهی شما قرار بگیرد و بارها استفاده شود.
نکته: اگر تغییراتی به این تابع دادهاید یا راههای بهتری برای انجام این کار در اختیار دارید در بخش نظرات همین نوشته برای ما ارسال کنید.
یک بانک اطلاعاتی از کلمات معنادار زبان فارسی با فرمت json را برای پروژههای خود به سادگی دریافت و استفاده کنید. (لینک: بانک داده ی کلمات معنادار فارسی با فرمت json)



















آیا این روش قابلیت تشخیص JSON معتبر ولی خالی رو داره؟
تشخیص JSON معتبر ولی خالی (مثل “[]” یا “{}”) امکانپذیره. باید بعد از json_decode بررسی کنی که نتیجه خالی باشه ولی خطایی برنگشته باشه.
این تابع روی نسخههای قدیمیتر PHP هم جواب میده یا محدودیت داره؟
بله، از نسخههای قدیمی PHP هم پشتیبانی میکنه. تابع json_decode از PHP 5.2 معرفی شده.
تفاوت is_array و is_object در اینجا دقیقاً چه کاربردی داره؟
is_array بررسی میکنه داده آرایه باشه، is_object هم بررسی میکنه شیء باشه. توی JSON هر دو ممکنه بسته به ساختار داده برگردونده بشن.
اگر دادهی JSON خیلی بزرگ باشه، استفاده از json_decode روی performance تأثیر میذاره؟
بله، برای JSONهای خیلی بزرگ json_decode میتونه روی performance و حافظه تأثیر بذاره. در این موارد استفاده از استریم یا کتابخونههای تخصصی پیشنهاد میشه.
آیا این تابع برای JSON تو در تو (nested) هم درست کار میکنه؟
بله، تابع روی JSONهای تو در تو هم درست کار میکنه. محدودیتی از این نظر نداره.