Работа с JSON
1.
Don (25.11.2014 / 09:44)
Идея такова, данные полученные с БД преобразовать в JSON формат, условие такое что не все поля нужны, допустим 12345 нам нужны выборочно 235. И весь полученный результат сохранить в .txt (в преобразованном виде JSON)
---
Есть неплохой css framework таблица данных, работает по JSON, хочу прикрутить это дело)
помогите реализовать концепцию... с JSON не приходилось работать..
2.
Антон (25.11.2014 / 11:24)
1.
БИТ, по твоему описанию на ум приходят функции unlink, foreach(?), json_encode. Больше ничего не могу сказать.
3.
Александр (25.11.2014 / 16:37)
"Есть неплохой css framework таблица данных, работает по JSON" css framework не может сам работать с json, непонятный вопрос.
4.
iNeeXT (25.11.2014 / 17:02)
Можно не сохранять данные в файл, а отдавать их через php-файл.
<?php
// подключение к базе данных
// предположим, что в переменную $data ты выбрал из базы данных необходимые данные
$response = array();
foreach ($data as $item)
$response[] = array('name' => $item['name'], ...);
echo json_encode($response);
Вот так преобразуешь данные в JSON-формат.
Муз-ТВ, скорее всего там JS-скрипт их подставляет в таблицу.
5.
Дмитрий (25.11.2014 / 20:09)
Все просто. Чтобы преобразовать массив в JSON, на стороне сервера используй ф-ю json_encode(). А на стороне клиента преобразуй его в объект и работай как с объектом JavaScript.
Например, ты отправляешь Ajax запрос на сервер, а там выполняется примерно вот такой код:
<?php
$array = array(
array(
'title' => 'Заголовок 1',
'desc' => 'Описание 1'
),
array(
'title' => 'Заголовок 2',
'desc' => 'Описание 2'
),
array(
'title' => 'Заголовок 3',
'desc' => 'Описание 3'
)
);
exit(json_encode($array));
При этом сервер тебе вернет вот это:
[{"title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1","desc":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 1"},{"title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2","desc":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 2"},{"title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3","desc":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 3"}]
Затем в клиенте обрабатываешь пришедшие данные вот такой конструкцией:
var parseJSON = (window.JSON && JSON.parse) ? function (obj) {
try { return JSON.parse(obj); } catch (e) {
return eval('('+obj+')');
}
} : function(obj) {
return eval('('+obj+')');
};
Здесь проверяется, поддерживает ли браузер метод JSON.parse. Если да - данные обрабатываются им. Если нет - то eval().
Например покажу на примере работы моего самописного аякс-объекта:
Ajax.get('/server.php', function(http_request){
// распарсили полученные данные
var data = parseJSON(http_request.responseText);
// посчитали размер объекта
var count = data.count;
// перебрали объект
for(var i=0; i<count; i++) {
// алерт отдаст "Заголовок1 Описание1"
alert(data[i]['title']+'\n'+data[i]['desc']);
}
});
Либо так:
// отправили запрос
Ajax.get('/server.php', function(http_request){
// распарсили полученные данные
var data = parseJSON(http_request.responseText);
// напрямую обратились к массиву
// алерт отдаст "Заголовок2 Описание2"
alert(data[1]['title']+'\n'+data[1]['desc']);
});
6.
Александр (25.11.2014 / 20:23)
Вот не лень же было так расписать.
7.
Антон (25.11.2014 / 23:24)
6.
Муз-ТВ, раз в две недели можно))
Хороший ответ Дмитрий, все как надо расписал.
URL:
https://visavi.net/topics/41622