Как правильно сформировать данные в формате json?

Разбираю пример одного из популярнейших скриптов highcharts - для построения графика.
Конкретно пример
jsfiddle.net/gh/get/library/pure/highcharts/highch...

Там есть строчка кода
$.getJSON('https://www.highcharts.com/samples/data/jsonp.php?filename=usdeur.json&callback=?'


Перейдя в браузере по адресу
https://www.highcharts.com/samples/data/jsonp.php?...
мы увидим данные. Но они не похожи на формат json ((RFC 4627)). Например, там нет кавычек, когда объекты в формате JSON похожи на обычные JavaScript-объекты, но отличаются от них более строгими требованиями к строкам – они должны быть именно в двойных кавычках. И т.д.

Более того, данные идут построчно, когда в исходном коде нет тега br. Я не смог добиться такого же форматирования.

То есть мой код
echo"
?([
[Date.UTC(2013,5,2),0.7695],\n
[Date.UTC(2013,5,3),0.7648],\n
[Date.UTC(2013,5,4),0.7645],\n
[Date.UTC(2013,5,5),0.7638],\n
[Date.UTC(2013,5,6),0.7549],\n
[Date.UTC(2013,5,7),0.7562],\n
[Date.UTC(2013,5,9),0.7574],\n
]);
";

отображается в одну строку. Их код - построчно для каждой даты.
Их код работает - т.е. график выводит. Мой - нет.

Ещё пытался сделать так
$data='[Date.UTC(2013,5,2),0.1],[Date.UTC(2013,5,3),0.2],[Date.UTC(2013,5,4),0.8],[Date.UTC(2013,5,5),0.2],[Date.UTC(2013,5,6),0.1]';
echo json_encode($data);

На графике прямая линия ( Почему - неизвестно.

Как мне правильно сформировать данные в формате json?
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Это не JSON, а JSONP, предназначенный для обхода кросс-доменных ограничений AJAX.
callback=? для jQuery означает, что будет использоваться автоматически сгенерированное имя callback-функции.
Ответ написан
Комментировать
@Abcdefgk
Нормальный массив массивов с одинаковыми индексами.
Тырц:
var arrArrov = [[Date.UTC(2013,5,2),0.1],[Date.UTC(2013,5,3),0.2],[Date.UTC(2013,5,4),0.8]];
var json = JSON.stringify(arrArrov);

и готово.
Это как таблица - но только без полей, а инкремент в двух направлениях.
Из него можно достать любые данные:
arrArrov[1][0] // => Date.UTC(2013,5,3)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы