سؤال

هل يعرف أحد من القوية (والدليل على الرصاص) Snippet for PHP؟ أنا (من الواضح) لديه موقف حيث أحتاج إلى معرفة ما إذا كانت السلسلة هي JSON أم لا.

هم، ربما تشغيله من خلال jonlint. طلب / استجابة، ولكن هذا يبدو مبالدا بعض الشيء.

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم المدمج json_decode وظيفة PHP، json_last_error إرجاع الخطأ الأخير (على سبيل المثال JSON_ERROR_SYNTAX عندما لم تكن السلسلة الخاصة بك json).

مستخدم json_decode عائدات null على أي حال.

نصائح أخرى

ماذا عن استخدام json_decode, ، والتي يجب أن تعود null إذا كانت السلسلة المحددة غير صالحة JSON بيانات مشفرة؟

انظر المثال 3 على الصفحة اليدوية:

// the following strings are valid JavaScript but not valid JSON

// the name and value must be enclosed in double quotes
// single quotes are not valid 
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// the name must be enclosed in double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// trailing commas are not allowed
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null

بالنسبة لمشاريعي، استخدم هذه الوظيفة (يرجى قراءة "ملحوظة" على ال json_decode () مستندات).

تمرير نفس الوسائط التي ستنتقلها إلى JSON_DECODE () يمكنك اكتشاف "أخطاء" تطبيق "(مثل أخطاء العمق)

مع PHP> = 5.6

// PHP >= 5.6
function is_JSON(...$args) {
    json_decode(...$args);
    return (json_last_error()===JSON_ERROR_NONE);
}

مع php> = 5.3

// PHP >= 5.3
function is_JSON() {
    call_user_func_array('json_decode',func_get_args());
    return (json_last_error()===JSON_ERROR_NONE);
}

مثال الاستخدام:

$mystring = '{"param":"value"}';
if (is_JSON($mystring)) {
    echo "Valid JSON string";
} else {
    $error = json_last_error_msg();
    echo "Not valid JSON string ($error)";
}

لا json_decode() مع json_last_error() اعمل لاجلك؟ هل تبحث عن مجرد طريقة ليقول "هل هذا يبدو وكأنه JSON" أو التحقق منه بالفعل؟ json_decode() سيكون السبيل الوحيد للتحقق من صحةه بفعالية داخل PHP.

$ this-> post_data = json_decode (stripslashes ($ post_data))؛ إذا كان ($ this-> post_data === null) {die ('{' الحالة ': false، "msg": "يجب أن تكون المعلمة post_data صالحة json"}')؛ }

هذه هي أفضل وطريقة فعالة

function isJson($string) {
    return (json_decode($string) == null) ? false : true;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top