Почему JSON с фигурными скобками недействителен?

Я пытаюсь передать действительный JSON в dataTables, но любой результат, который использует фигурные скобки в массиве, не принимается.

Рабочие данные JSON [демо]:

{
"data":[

[
"Rhona Davidson",
"Integration Specialist",
"Tokyo",
55,
"2010/10/14",
"$327,900"],
[
"Colleen Hurst",
"Javascript Developer",
"San Francisco",
39,
"2009/09/15",
"$205,500"],
[
"Sonya Frost",
"Software Engineer",
"Edinburgh",
23,
"2008/12/13",
"$103,600"],
[
"Jena Gaines",
"Office Manager",
"London",
30,
"2008/12/19",
"$90,560"],
[
"Quinn Flynn",
"Support Lead",
"Edinburgh",
22,
"2013/03/03",
"$342,000"],
[
"Charde Marshall",
"Regional Director",
"San Francisco",
36,
"2008/10/16",
"$470,600"],
[
"Haley Kennedy",
"Senior Marketing Designer",
"London",
43,
"2012/12/18",
"$313,500"],
[
"Jenette Caldwell",
"Development Lead",
"New York",
30,
"2011/09/03",
"$345,000"],
[
"Yuri Berry",
"Chief Marketing Officer (CMO)",
"New York",
40,
"2009/06/25",
"$675,000"],
[
"Caesar Vance",
"Pre-Sales Support",
"New York",
21,
"2011/12/12",
"$106,450"],
[
"Doris Wilder",
"Sales Assistant",
"Sidney",
23,
"2010/09/20",
"$85,600"],
[
"Angelica Ramos",
"Chief Executive Officer (CEO)",
"London",
47,
"2009/10/09",
"$1,200,000"],
[
"Gavin Joyce",
"Developer",
"Edinburgh",
42,
"2010/12/22",
"$92,575"],
[
"Jennifer Chang",
"Regional Director",
"Singapore",
28,
"2010/11/14",
"$357,650"],
[
"Brenden Wagner",
"Software Engineer",
"San Francisco",
28,
"2011/06/07",
"$206,850"],
[
"Fiona Green",
"Chief Operating Officer (COO)",
"San Francisco",
48,
"2010/03/11",
"$850,000"],
[
"Shou Itou",
"Regional Marketing",
"Tokyo",
20,
"2011/08/14",
"$163,000"],
[
"Michelle House",
"Integration Specialist",
"Sidney",
37,
"2011/06/02",
"$95,400"],
[
"Suki Burks",
"Developer",
"London",
53,
"2009/10/22",
"$114,500"],
[
"Prescott Bartlett",
"Technical Author",
"London",
27,
"2011/05/07",
"$145,000"],
[
"Gavin Cortez",
"Team Leader",
"San Francisco",
22,
"2008/10/26",
"$235,500"],
[
"Martena Mccray",
"Post-Sales support",
"Edinburgh",
46,
"2011/03/09",
"$324,050"],
[
"Unity Butler",
"Marketing Designer",
"San Francisco",
47,
"2009/12/09",
"$85,675"],
[
"Howard Hatfield",
"Office Manager",
"San Francisco",
51,
"2008/12/16",
"$164,500"],
[
"Hope Fuentes",
"Secretary",
"San Francisco",
41,
"2010/02/12",
"$109,850"],
[
"Vivian Harrell",
"Financial Controller",
"San Francisco",
62,
"2009/02/14",
"$452,500"],
[
"Timothy Mooney",
"Office Manager",
"London",
37,
"2008/12/11",
"$136,200"],
[
"Jackson Bradshaw",
"Director",
"New York",
65,
"2008/09/26",
"$645,750"],
[
"Olivia Liang",
"Support Engineer",
"Singapore",
64,
"2011/02/03",
"$234,500"]
]
}

Сбой данных JSON (демонстрация):

{ «Данные»: [{ «ID»: «in_1DLk6ZLrfrJRnR7ZLFRmoZAp», «количество оплачиваемых»: 15911}]}

Возвращает

{"data":[{"id":"in_1DLk6ZLrfrJRnR7ZLFRmoZAp","amount-paid":15911}]}

Демонстрация возвращает содержимое из файла PHP.

 header("HTTP/1.1 200 OK");
foreach ($api_response['data'] as $customer) {
$return_array[] = array(
'id' => $customer['id'], 'amount-paid' => $customer['amount_paid']);
}

$mainArray['data'] = $return_array;
echo json_encode($mainArray);

Любые предложения будут очень признательны.

0

Решение

Вы можете иметь формат после, только если у вас нет имен меток для полей …

$return_array[] = array(
$customer['id'], $customer['amount_paid']);
}

Как только вы включаете метки — это начинает означать, что данные являются объектом, а не массивом.

0

Другие решения

Я думаю, что проблема не в содержании Json, а в типе содержимого вашего echoPost.php
Datatable проверяет тип содержимого ответа. И это должно быть application/json быть действительным

Попробуйте этот код:

 header("HTTP/1.1 200 OK");
header("Content-Type: application/json");
foreach ($api_response['data'] as $customer) {
$return_array[] = array(
'id' => $customer['id'], 'amount-paid' => $customer['amount_paid']);
}

$mainArray['data'] = $return_array;
echo json_encode($mainArray);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector