За последние 24 часа нас посетили 18990 программистов и 1638 роботов. Сейчас ищут 1738 программистов ...

Как распарсить JSON если несколько массивов

Тема в разделе "JavaScript и AJAX", создана пользователем Intrerio, 12 окт 2016.

  1. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Собственно вопрос.
    Есть вот это:
    PHP:
    1.         $error_array = array();
    2.         if($type_error == "0001"){
    3.             $error_array[] = array("result"=>0, "error"=>"Не передано уточнюючий параметр", "code"=>"0001");
    4.             header('Content-type: application/json');
    5.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    6.         }
    7.         if($type_error == "0002"){
    8.             $error_array[] = array("result"=>0, "error"=>"Переданий уточнюючий параметр невідомий для системи", "code"=>"0002");
    9.             header('Content-type: application/json');
    10.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    11.         }
    Это ошибки при запросе. В ответ на запрос генерируется JSON. Проблема в том что в такой конструкции генерится два совершенно не связаных ответа. Соответственно json_decode выдает NULL. Посоветуйте вариант распарсинга или вариант сбивать в кучу все ответы.
    Спасибо
    --- Добавлено ---
    А полный код странички ошибок вот такой:
    PHP:
    1. class Info{
    2.     function error_info($type_error){
    3.         if($type_error == "0001"){
    4.             $error_array[] = array("result"=>0, "error"=>"Не передано уточнюючий параметр", "code"=>"0001");
    5.             header('Content-type: application/json');
    6.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    7.         }
    8.         if($type_error == "0002"){
    9.             $error_array[] = array("result"=>0, "error"=>"Переданий уточнюючий параметр невідомий для системи", "code"=>"0002");
    10.             header('Content-type: application/json');
    11.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    12.         }
    13.         if($type_error == "0003"){
    14.             $error_array[] = array("result"=>0, "error"=>"Параметр з переліком продуктів пустий", "code"=>"0003");
    15.             header('Content-type: application/json');
    16.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    17.         }
    18.         if($type_error == "0004"){
    19.             $error_array[] = array("result"=>0, "error"=>"Параметр з продуктами містить недопустиме значення", "code"=>"0004");
    20.             header('Content-type: application/json');
    21.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    22.         }
    23.         if($type_error == "0005"){
    24.             $error_array[] = array("result"=>0, "error"=>"Не передано тип поїздки", "code"=>"0005");
    25.             header('Content-type: application/json');
    26.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    27.         }
    28.         if($type_error == "0006"){
    29.             $error_array[] = array("result"=>0, "error"=>"Тип поїздки невідомий для системи", "code"=>"0006");
    30.             header('Content-type: application/json');
    31.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    32.         }
    33.         if($type_error == "0007"){
    34.             $error_array[] = array("result"=>0, "error"=>"Пустий параметр вартості продукту партнера", "code"=>"0007");
    35.             header('Content-type: application/json');
    36.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    37.         }
    38.         if($type_error == "0008"){
    39.             $error_array[] = array("result"=>0, "error"=>"Проблема з розрахунком вартості срахового продукту", "code"=>"0008");
    40.             header('Content-type: application/json');
    41.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    42.         }
    43.         if($type_error == "0009"){
    44.             $error_array[] = array("result"=>0, "error"=>"Пустий параметр Action", "code"=>"0009");
    45.             header('Content-type: application/json');
    46.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    47.         }
    48.         if($type_error == "0010"){
    49.             $error_array[] = array("result"=>0, "error"=>"Невірний параметр Action", "code"=>"0010");
    50.             header('Content-type: application/json');
    51.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    52.         }
    53.         if($type_error == "0011"){
    54.             $error_array[] = array("result"=>0, "error"=>"Вартість клієнтського продукту недійсна", "code"=>"0011");
    55.             header('Content-type: application/json');
    56.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    57.         }
    58.         if($type_error == "0012"){
    59.             $error_array[] = array("result"=>0, "error"=>"Не вказано кількість днів", "code"=>"0012");
    60.             header('Content-type: application/json');
    61.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    62.         }
    63.         if($type_error == "0013"){
    64.             $error_array[] = array("result"=>0, "error"=>"Параметр дні може приймати лише числове значення", "code"=>"0013");
    65.             header('Content-type: application/json');
    66.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    67.         }
    68.         if($type_error == "0014"){
    69.             $error_array[] = array("result"=>0, "error"=>"Неможливо отримати страховий тариф", "code"=>"0014");
    70.             header('Content-type: application/json');
    71.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    72.         }
    73.         if($type_error == "0015"){
    74.             $error_array[] = array("result"=>0, "error"=>"Відсутній дозвіл на страхові продукти", "code"=>"0015");
    75.             header('Content-type: application/json');
    76.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    77.         }
    78.         if($type_error == "0016"){
    79.             $error_array[] = array("result"=>0, "error"=>"Немає імені клієнта", "code"=>"0016");
    80.             header('Content-type: application/json');
    81.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    82.         }
    83.         if($type_error == "0017"){
    84.             $error_array[] = array("result"=>0, "error"=>"Немає прізвища клієнта", "code"=>"0017");
    85.             header('Content-type: application/json');
    86.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    87.         }
    88.         if($type_error == "0018"){
    89.             $error_array[] = array("result"=>0, "error"=>"Не визначено параметр оплати", "code"=>"0018");
    90.             header('Content-type: application/json');
    91.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    92.         }
    93.         if($type_error == "0019"){
    94.             $error_array[] = array("result"=>0, "error"=>"Не передано дату початку дії", "code"=>"0019");
    95.             header('Content-type: application/json');
    96.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    97.         }
    98.         if($type_error == "0020"){
    99.             $error_array[] = array("result"=>0, "error"=>"Не передано електронну пошту клієнта", "code"=>"0020");
    100.             header('Content-type: application/json');
    101.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    102.         }
    103.         if($type_error == "0021"){
    104.             $error_array[] = array("result"=>0, "error"=>"Помилка при створенні клієнта", "code"=>"0021");
    105.             header('Content-type: application/json');
    106.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    107.         }
    108.         if($type_error == "0022"){
    109.             $error_array[] = array("result"=>0, "error"=>"Невірні дані авторизації", "code"=>"0022");
    110.             header('Content-type: application/json');
    111.             echo json_encode($error_array_array, JSON_UNESCAPED_UNICODE);
    112.         }
    113.         if($type_error == "0023"){
    114.             $error_array[] = array("result"=>0, "error"=>"Проблема авторизації", "code"=>"0023");
    115.             header('Content-type: application/json');
    116.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    117.         }
    118.         if($type_error == "0024"){
    119.             $error_array[] = array("result"=>0, "error"=>"Помилка при створенні нового договору продукту ID14", "code"=>"0024");
    120.             header('Content-type: application/json');
    121.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    122.         }
    123.         if($type_error == "0025"){
    124.             $error_array[] = array("result"=>0, "error"=>"Даний поліс недоступний для даного партнера", "code"=>"0025");
    125.             header('Content-type: application/json');
    126.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    127.         }
    128.         if($type_error == "0026"){
    129.             $error_array[] = array("result"=>0, "error"=>"Такого договору немає в системі", "code"=>"0026");
    130.             header('Content-type: application/json');
    131.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    132.         }
    133.         if($type_error == "0027"){
    134.             $error_array[] = array("result"=>0, "error"=>"Не вказано статус договору", "code"=>"0027");
    135.             header('Content-type: application/json');
    136.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    137.         }
    138.         if($type_error == "0028"){
    139.             $error_array[] = array("result"=>0, "error"=>"Помилка ануляції", "code"=>"0028");
    140.             header('Content-type: application/json');
    141.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    142.         }
    143.         if($type_error == "0029"){
    144.             $error_array[] = array("result"=>0, "error"=>"Не вказано ID договору", "code"=>"0029");
    145.             header('Content-type: application/json');
    146.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    147.         }
    148.         if($type_error == "0030"){
    149.             $error_array[] = array("result"=>0, "error"=>"Не передано коментар до дії", "code"=>"0030");
    150.             header('Content-type: application/json');
    151.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    152.         }
    153.         if($type_error == "0031"){
    154.             $error_array[] = array("result"=>0, "error"=>"Не виконані умови параметру", "code"=>"0031");
    155.             header('Content-type: application/json');
    156.             echo json_encode($error_array, JSON_UNESCAPED_UNICODE);
    157.         }
    158.     }
    159. }
    160. $error = new Info();
    --- Добавлено ---
    Я как бы вот выпил кофе и голова заработала. Я понимаю что это ж все в классе делается. Я понимаю что данные физически не могут попадать в единый массив. Что посоветуете изменить?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ты для двух разных массивов вызываешь json_encode и склеиваешь результаты вместе?
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Именно так. Однако...
    Автор, учись в отладку аякса на клиентской стороне, и смотри, что ты ему передаешь.
    Хочешь передать несколько массивов - заводи массив $result, в ячейки которого, в свою очередь, пиши остальные массивы. И сериализуй именно его.

    При десериализации на стороне клиента получишь так же двухмерный массив.
     
  4. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Я разобрался уже с этим. Там дело в том что при каждом запросе в класс создается отдельный массив,а не дополняется общий. Избавился от класса и все прекрасно работает. Всем спасибо