PHP + Json

Печать RSS
191

Автор
Пацак
0
Всем привет! вот сейчас работаю над своим и не только проектом... где хочу обеспечить наибольший комфорт для клиента (пользователя) через AJAX - клиентская библиотека jQuery ( Комфорт заключается не только в расходуемом им трафике но сейчас речь идет именно об этом! ).
ранее работал с XML при передачи данных - довольно комфортно себя ощущал ... о Json много чего наслышан и все его плюсы и минусы.. но вотт хочу начать с ним работать слышал что для php есть две замечательные функции json_encode () и json_decode (); на локальном сервере они работают зашибца но есть сомнения насчет того что они могут не поддерживаться будущим хостин-провайдером поскольку во всех источниках написано о том что он не входит в комплект поставки PHP 4.x но а как дела обстоят с 5ой версией я не знаю! О_о и вот хочу узнать возможно есть какие либо классы написанные на пыхе для работы с ним ибо не очень хочется изобретать велосипед и писать свой! и самым главным требованием к классу является создание и двухуровневых массивов Json! заранее спасибо!
Изменил: Веталь (10.10.2010 / 00:56)
A

Оранжевые штаны
0
json включена в php с версии 5.2 так что скорей всего у всех хостинг провайдеров проблем не будет, но вопрос в том, точно ли нужен отказ от xml, нужно ли это вообще, т.к. xml гораздо проще имхо
Автор
Пацак
0
2. Azzido, да для меня проще но json гораздо легче например одни и теже данные в XML:
<messages>
<message id = "1">
<name>molodoy</name>
<text>Привет всем!</text>
</message>
</messages>
и тоже на json:
[
{
"1":{
"name":"molodoy",
"text":"Всем привет!"
}
]

Оранжевые штаны
0
http://php.net/json
Там написано, что с версии 5.2 он включён в состав PHP
Автор
Пацак
0
Вот только одна проблема... меньше слов - больше кода:
$result = mysql_query ("SELECT * FROM `news` LIMIT 0, 10;");
	$total = mysql_num_rows ($result);
	
	for ($i = 0; $i < $total; $i++)
	{
		mysql_data_seek ($result, $i);
		$array = mysql_fetch_array ($result);
		
		$json[] = $array;
	}
	
	print json_encode ($json);
а в результате он мне возвращает json с наименованиями ключей но значения пустые! О_о

Добавлено через 01:10 сек.
Studentsov_нет_ничо1 (10 Октября 2010 / 01:37)
http://php.net/json
Там написано, что с версии 5.2 он включён в состав PHP
Вижу:
As of PHP 5.2.0, the JSON extension is bundled and compiled into PHP by default.
E
Автор
Пацак
0
нашел в мануале что json_encode может обрезать кирилицу в UTF-8 поэтому код немного подрос:
$result = mysql_query ("SELECT * FROM `news` LIMIT 0, 10;");
	$total = mysql_num_rows ($result);
	
	for ($i = 0; $i < $total; $i++)
	{
		mysql_data_seek ($result, $i);
		$array = mysql_fetch_array ($result);
		
		foreach ($array as $key => $value)
		{
			$json[$i][$key] = iconv("UTF-8","windows-1251", $value);
		}
		
	}
	
	print json_encode ($json);
непомагает!

Добавлено через 03:16 сек.
ыыы.. поменял местами в iconv с win на utf отдал вполнеожидаемый результат: 30\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c","2":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442 \u041d\u0430\u0448 \u0441\u0430\u0439\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u0432 \u0441\u0432\u043e\u0435\u043c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0436\u0438\u0437\u043d\u0438!","text":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442 \u041d\u0430\u0448 \u0441\u0430\u0439\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u0432 \u0441\u

Вопрос? а можно как нидь без этого? ггг E
Автор
Пацак
0
блин... гдето же в станд. наборе была фн для обратного преобразовани... вспомнить не могу...
Автор
Пацак
0
всем спасибо.. почитал либу про utf и написал fn для преобразования этой аброкадабры в человекопонятный стринг smile
темко клосед...
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск