2013-05-01 5 views
0

Мы получаем ежедневный загружаемый файл, который находится в формате файла JSON. Оттуда серия скриптов анализирует файл JSON. Тем не менее, я хочу сделать процесс более надежным и проверить его, чтобы убедиться, что загруженный файл действительно находится в формате JSON до его продолжения. Возможно, это не в формате JSON по нескольким причинам, таким как проблема с передачей данных, или кто-то помещал туда неправильный файл для загрузки. В любом случае, я хотел бы иметь возможность проверить файл и проверить его в формате JSON, прежде чем приступать к синтаксическому анализу.PHP: проверка формата файла JSON в PHP?

Есть ли способ PHP для проверки того, что файл находится в формате JSON? Благодаря!

Будет ли это делать?

// Returns True if JSON data is good, false if bad. 
function isJson($string) { 
json_decode($string); 
return (json_last_error() == JSON_ERROR_NONE); 
} 

// invalid JSON data 
$json = 'blablabla{"user_id":14,"username":"flow"}]foobar'; 
if(isJson($json)) 
{ 
     echo "good" . "\n"; 
     } 
else { 
     echo "bad" . "\n"; 
} 

ответ

5

json_decode уже подтверждает вход: если он недействителен, то она возвращает null.

В маловероятном случае, если вы хотите провести различие между недопустимым вводом и "null" (т.е. представлением JSON из null), вы можете выполнить дополнительную проверку вручную:

if(stricmp(trim($input), "null") == 0) { 
    // $input is a json representation of null 
} 
+0

+1 за то, что бил меня на тот же ответ :) – fullybaked

+0

Я вижу. Могу ли я просто проверить, является ли json_decode ($ string) ложным? – Edward

+0

@Edward: Узнайте, как именно и с какой целью? Вы прочитали функциональную документацию? – Jon

0

Я хотел бы попробовать использовать jsonlint: https://github.com/zaach/jsonlint Он может сделать гораздо больше, но также является валидатором