json_encode - проблема с форматированием?

0

Я прошу, чтобы мой вывод выглядел следующим образом:

Response
{
    error_num: 0
    error_details:
    [
        {
            "zipcode": 98119
        },
        {
            "zipcode": 98101
        }
    ]
}

Для этого примера значения не имеют значения.

Мой код выглядит так:

$returndata = array('error_num' => $error_code);
$returndata['error_details'] = $error_msg;

$temp_data = array();
$temp_value = '';
foreach ($zipcodes_array as $value) {
    //$temp_data['zipcode'] = $value;
    //$temp_value .= json_encode($temp_data);
    $temp_value .= '{"zipcode":$value},';
}
//$returndata['test'] = $temp_value;
$returndata['zipcodes'] = $temp_value;
echo json_encode($returndata);

Мой выход варьируется в зависимости от моих разных попыток (которые вы можете видеть с комментариями), но в основном я не понимаю, как третья часть (часть с zipcodes) не имеет ключа или определения до первого открытая скобка "["

Вот результат для кода выше:

{"error_num":0,"error_details":"","zipcodes":"{\"zipcode\":11111},{\"zipcode\":11112},{\"zipcode\":11113},{\"zipcode\":22222},{\"zipcode\":33333},{\"zipcode\":77325},{\"zipcode\":77338},{\"zipcode\":77339},{\"zipcode\":77345},{\"zipcode\":77346},{\"zipcode\":77347},{\"zipcode\":77396},{\"zipcode\":81501},{\"zipcode\":81502},{\"zipcode\":81503},{\"zipcode\":81504},{\"zipcode\":81505},{\"zipcode\":81506},{\"zipcode\":81507},{\"zipcode\":81508},{\"zipcode\":81509},"}

Очевидно, я не показывал, что переменные заполняются/создаются, потому что они через MySQL. Значения неактуальны. Его формат вывода я пытаюсь спуститься. Я не понимаю, как у них есть "zipcode": часть между {} скобками внутри другого раздела, которая, как представляется, использует JSON_ENCODE

Он близок, но посмотрите, как он все еще имеет "zipcodes": часть там определяет, какой ключ эти значения включены? Мой вопрос в том, является ли "ответ" выше запрошенным партнером, фактически в формате JSON_ENCODE? или это в каком-то обычном формате, который мне просто нужно будет сделать с помощью любых json-функций PHP? Я могу легко написать это, но, основываясь на том, как он выглядит в приведенном выше примере (ответ), я думал, что используется JSON_ENCODE.

Кроме того, он продолжает помещать\перед ", что тоже неправильно. Я знаю, что это, вероятно, делает это, потому что я json_encode для строки. Надеюсь, вы увидите, что я пытаюсь сделать.

Если это просто пользовательский материал, похожий на JSON, я прошу прощения. Я попытался спросить партнера, но, я думаю, я не задаю правильные вопросы (или правильный человек). Они никогда не могут дать мне ответы.

EDIT: обратите внимание, что мой вывод также не имеет [или] в нем. но некоторые из моих тестовых вещей JSON_ENCODE были в нем. Я уверен, что только я здесь не могу, я просто не могу понять это.

Теги:

2 ответа

1
Лучший ответ

Если вы хотите, чтобы ваш вывод выглядел как выход JSON в самом верху вашего вопроса, напишите код следующим образом:

$returndata = array('error_num' => $error_code);
$returndata['error_details'] = array();

foreach ($zipcodes_array as $value) {
    $returndata['error_details'][] = array('zipcode' => (int)$value);
}
echo 'Response ' . json_encode($returndata);

Это вернет JSON, отформатированный, как вы просили выше.

Response
{
    error_num: 0
    error_details:
    [
        {
             "zipcode": 98119
        },
        {
             "zipcode": 98101
        }
    ]
}
  • 0
    Ты сделал это. Это место.
1

Можете ли вы просто использовать один объект ZipCode в качестве ассоциативного массива, выталкивать все ваши небольшие объекты ZipCode в массив ZipCodes и кодировать всю структуру данных. Вот пример кода:

$returndata = array(
    'error_num'     => $error_code,
    'error_details' => array()
);

foreach ($zipcodes_array as $value) {
    $returndata['error_details'][] = array('zipcode' => $value);
}
echo json_encode($returndata);
  • 0
    Этот действительно очень близок, но есть различия, такие как слово «почтовые индексы» перед массивом почтовых индексов. Я действительно думаю, что предоставленный мне пример (который скопирован вверху моего поста) ошибочен. похоже, нет способа (с помощью json) его дублировать. но твой пример намного ближе, чем мой.
  • 1
    Я удалил «почтовые индексы» из массива результатов, и теперь мой ответ такой же, как и ответ Манмару :) Он был первым.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню