2014-11-10 4 views
0

Я прошу мой выход выглядеть следующим образом:json_encode - проблема форматирования?

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); 

Мой выход изменяется в зависимости от моих различных попыток (которые вы можете увидеть с закомментированными вещей), но в принципе, я не понимаю, как третья часть (часть с Почтовые индексы) не имеет ключа или определение перед первой открывающей скобки «[»

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

{"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},"} 

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

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

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

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

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

+1

если у вас нет данных, то var finalData = str.replace (/ \\/g, ""); или stripslashes ($ str); –

+0

Хорошая идея. Я сделаю это, но формат запрошенной продукции по-прежнему не соответствует моей, и это вызывает большую озабоченность, чем косые черты. Я продолжаю думать о каком-то json_encode внутри другого json_encode, но я просто не могу понять это. – DerekConlon

+1

Он просто выглядит как вложенный JSON для меня, хотя неправильно отформатирован, посмотрите на этот вопрос. http://stackoverflow.com/questions/15810257/create-nested-json-object-in-php – EternalHour

ответ

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

Ты прибил его. Это место. – DerekConlon

1

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

$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

Это тоже очень близко, но есть различия, такие как слово «zipcodes» перед массивом zipcodes. Я действительно думаю, что предоставленный мне пример (который скопирован в верхней части моего сообщения) ошибочен. кажется, нет способа (с json) дублировать его. но ваш пример ближе, чем мой. – DerekConlon

+1

Я удалил «zipcodes» из массива результатов, и теперь мой ответ такой же, как ответ Манмару :) Он был первым. –

+0

Я благодарю вас за помощь :) – DerekConlon

Смежные вопросы