2016-07-08 3 views
1

Я хотел бы получить ответ JSON на мой второй сервер с доменом example.com, где файл getit.php содержит:Как создать ответ JSON в файле PHP?

$arr = array('antwort' => 'jo'); 

echo json_encode($arr); 

Теперь, когда я пытаюсь получить его с моим первым сервером:

$url = 'http://www.example.com/getit.php'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$antwort = curl_exec($ch); 
curl_close($ch); 

$antwort = json_decode($antwort); 

    echo '<pre>'; 
    var_dump($antwort); 
    echo '</pre>'; 

Я получаю:

object(stdClass)#2 (1) { 
    ["antwort"]=> 
    string(4) "jo" 
} 

И не нормальный массив, как его преобразовать в массив?

Я уже опробовал $antwort = json_decode(json_encode($antwort), True);, но у меня есть только странная строка с этим ?!

+0

Возможный дубликат [Почему функция PHP «json \ _decode» возвращает объект?] (Http://stackoverflow.com/questions/12400651/why-does-the-php-function-json-decode-return -an-object) – patrick

ответ

2

Определение JSON: Обозначение объекта JavaScript. Массивы JavaScript могут содержать только цифровые клавиши. В вашем массиве есть строковые ключи, поэтому он ДОЛЖЕН быть закодирован как JavaScript OJBECT, которые позволяют использовать строковые ключи.

Телль json_decode() вы хотите массивы вместо:

$arr = json_decode($json, true); 
          ^^^^ 

the docs согласно

Где, как вы сделали свой json_decode(json_encode($antwort))? Единственный способ вернуть строку - если вы закодировали $ antwort, который вы получили от curl_exec().

+0

ok спасибо: D works –

+0

@AnneSchwarz Но зачем вам нужен массив над объектом. С объектами еще проще справиться, чем с массивами – RiggsFolly

+0

как это сделать? объекты проще, если у вас действительно есть истинный объект с методами и еще много чего. объект только для хранения некоторых ключей/значений по существу ИДЕНТИЧНО для массива. –

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