2013-07-13 5 views
2

Мои скрипты проверяют, содержит ли элемент массива json. Все работает хорошо, пока я не доберусь до элемента массива, который содержит строку, состоящую из чисел (почтовый индекс). Это то, что происходит:Json_decode ошибочно считает строку чисел json

$s = '70115'; 
if (json_decode($s)){ 
    echo 'this is json'; 
} else { 
    echo 'this is not json'; 
} 
//result: 'this is json' 
//expected result: 'this is not json' 

Я попытался явно литья $ S в виде строки и кодирования это UTF8, но не повезло.

Любая идея, почему это происходит?

+0

AFAIK это действительно json. – Maerlyn

+2

http://json.org/ –

+0

Тогда мне, должно быть, что-то не хватает о json. Таким образом, любая коллекция чисел действительна json, но если я помещаю альфа-символы (скажем $ s = 'Chicago';), это не так? – Judson

ответ

2

Действительно JSON.

Вы можете проверить, если у вас есть объект, на самом деле:

$s = '70115'; 

if (is_object(json_decode($s))){ 
    echo 'this is json'; 
} else { 
    echo 'this is not json'; 
} 
Смежные вопросы