json_decode не работает

KOLANICH

Новичок
получаю с сервера в сети жсон
запускаю json_decode
получаю null
в браузере в консоли файрбага запускаю JSON.parse и получаю данные
почему и в чём проблема
 

Adelf

Administrator
Команда форума
KOLANICH
помоему, кириллица в нормально json-упаковщике должна быть прогнана через urlencode.
 

Avron2

Новичок
Может дело не в кодировке. Приведу свой код формирования массива в формате JSON
PHP:
    include "$_SERVER[DOCUMENT_ROOT]/include/convert.inc";
    $sql = "SELECT * FROM ".T_THEMES." WHERE (id=$_GET[id]) ORDER BY theme ASC";
    $db_q = connect->query($sql);
	if (!$db_q)		{
		new Error("Ошибка выборки информации о теме");
	}
    else    {
        while ($aTheme = $db_q->fetch_assoc())  {
            $aThemes[] = array('id_parent' => $aTheme['id_parent'],'theme' => convertToCP1251($aTheme['theme']),'description' => convertToCP1251($aTheme['description']));
        }
    }   
    echo json_encode($aThemes);
 

KOLANICH

Новичок
не в кассу

KOLANICH
у тебя кирилица в запросе или json ответе?
и там и там
посылается на сторонний сервис в виде urlencode без жсона
потом идёт на сторонний сервис запрос
в запросе возвращается жсон
который не парсится
если вывести строку-ответ, то вместо кириллицы - крякозябры
это портит жсон
сервис кириллицу точно поддерживает
 

Adelf

Administrator
Команда форума
KOLANICH
значит сторонний сервис не делает urlencode...
 

Techmind

Новичок
ну gdb в руки и вперед) но вобще довольно стандартная ситуация, что не совсем корректный utf-8 не схавывается декодом, иногда бывает кавычки не по феншую стоят(в 5.1 вроде бы попадалось такое), иногда не утф-8 символ убивает парс, лучший вариант фильтровать строку, на заранее разрешенные символы.

вобще можно бы приаттачить сюда(ну точнее на любой файл-хостинг) кусок ответа, и станет понятным какие символы - левые.
 

gs-design

Новичок
Работая с jqGrid в демке наткнулся на такой вот код, который разбирает Json вручную. Может поможет? Привожу код:
PHP:
$arr = Strip($_REQUEST['data']);

function Strip($value)
{
	if(get_magic_quotes_gpc() != 0)
  	{
    	if(is_array($value))  
			if ( array_is_associative($value) )
			{
				foreach( $value as $k=>$v)
					$tmp_val[$k] = stripslashes($v);
				$value = $tmp_val; 
			}				
			else  
				for($j = 0; $j < sizeof($value); $j++)
        			$value[$j] = stripslashes($value[$j]);
		else
			$value = stripslashes($value);
	}
	return $value;
}
function array_is_associative ($array)
{
    if ( is_array($array) && ! empty($array) )
    {
        for ( $iterator = count($array) - 1; $iterator; $iterator-- )
        {
            if ( ! array_key_exists($iterator, $array) ) { return true; }
        }
        return ! array_key_exists(0, $array);
    }
    return false;
}
 

KOLANICH

Новичок
спасибо,конечно, но разбор вручную хуже по производительности
 
Сверху