Добрый день,
решил выводить ссылки на новые статьи с сайта modx на фотогалерею, для этого воспрользовался JSON. К сожалению, наткнулся на множество нюансов, некоторые из которых поборол, некоторые нет.
1. Оказалось, что если в поле introtext содержатся коды новой строки, то JSON нарушается, поэтому создал собственные темплейты, чтобы исключить introtext из вывода.
2. Пробовал парсить результат через jQuery, наткнулся на проблему невозможности прямого парсинга результатов с другого домена, в итоге, решил обрабатывать результаты на php.
3. Сейчас столкнулся с тем, что json_decode() не работает с выводом Ditto, вот пример:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
$content = file_get_contents('http://imagemaster.ru/json.js');
var_dump($content);
var_dump(json_decode($content));
var_dump(json_decode($content, true));
В итоге получаем:
http://imagemaster.ru/json.js - исходный json
http://gallery.imagemaster.ru/jparser.php - парсер
object(stdClass)#1 (5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }
array(5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }
string(615) " { "title":"json", "link":"http://imagemaster.ru/json.js.html", "description":"", "language":"ru", "copyright":"ImageMaster - все о цифровой фотографии 2009", "ttl":"120", "entries":[ { "title":"Bibble 5.0.1", "url":"http://imagemaster.ru/bibble-5-0-1.html", }, { "title":"Save As или Save for Web", "url":"http://imagemaster.ru/save-for-web-vs-save-as.html", }, { "title":"Правила фотогалереи", "url":"http://imagemaster.ru/gallery-rules.html", }, { "title":"DxO Optics Pro 6.1.2", "url":"http://imagemaster.ru/195.html", } ] }"
string(615) " { "title":"json", "link":"http://imagemaster.ru/json.js.html", "description":"", "language":"ru", "copyright":"ImageMaster - все о цифровой фотографии 2009", "ttl":"120", "entries":[ { "title":"Bibble 5.0.1", "url":"http://imagemaster.ru/bibble-5-0-1.html", }, { "title":"Save As или Save for Web", "url":"http://imagemaster.ru/save-for-web-vs-save-as.html", }, { "title":"Правила фотогалереи", "url":"http://imagemaster.ru/gallery-rules.html", }, { "title":"DxO Optics Pro 6.1.2", "url":"http://imagemaster.ru/195.html", } ] }"
string(615) " { "title":"json", "link":"http://imagemaster.ru/json.js.html", "description":"", "language":"ru", "copyright":"ImageMaster - все о цифровой фотографии 2009", "ttl":"120", "entries":[ { "title":"Bibble 5.0.1", "url":"http://imagemaster.ru/bibble-5-0-1.html", }, { "title":"Save As или Save for Web", "url":"http://imagemaster.ru/save-for-web-vs-save-as.html", }, { "title":"Правила фотогалереи", "url":"http://imagemaster.ru/gallery-rules.html", }, { "title":"DxO Optics Pro 6.1.2", "url":"http://imagemaster.ru/195.html", } ] }"
Т.е. простейший пример распарсился, а json с сайта нет. Может кто подсказать, как таки распарсить эту строчку? Мне просто нужно получить список ссылок на статьи с названиями.
Upd: Решил проблему, дело было в лишней крайней запятой внутри entries.