Как декодировать ответ json из API - PullRequest
0 голосов
/ 10 мая 2018

Я вызываю данные из API следующим образом:

$curl = curl_init();
//adding fields to the curl object to enter the site
curl_setopt($curl, CURLOPT_URL, $my_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);  
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

//executing the curl call and getting data back
$jsonStr = curl_exec($curl);

curl_close($curl); // close the connection

print_r($jsonStr);

работает нормально, но дело в том, что я не могу декодировать ответ json. Я получаю что-то вроде этого:

[{"id":1,"name":"Books","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"200.0000"}],"tax":[]},{"id":2,"name":"pencil","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"5000.0000"}],"tax":[]}]

Я пытался декодировать это и вызывал значение типа "echo $ code [0] ['name'];" и я не мог, он показывает тот же массив json, затем я попытался сохранить массив json в переменную типа:

$json = '[{"id":1,"name":"Books","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"200.0000"}],"tax":[]},{"id":2,"name":"pencil","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"5000.0000"}],"tax":[]}]';

и попытался расшифровать его, и оно работает, я думаю, что проблема заключается в одинарных кавычках. Я не уверен, но это то, что я предполагаю, основываясь на результатах, которые я получаю. Я новичок в curl, json и php, так что если кто-то может мне помочь.

Кстати, я пытаюсь расшифровать так:

$code = json_decode($jsonStr ,true);
echo $code[0]['id'];

но он не работает, он возвращает тот же полный массив json, а не значение, которое я пытаюсь получить

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

[{"id":1,"name":"Books","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"200.0000"}],"tax":[]},{"id":2,"name":"pencil","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"5000.0000"}],"tax":[]}]

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

Не уверен, почему у вас не работает. Когда строка json находится в коде, она работает.

<?php

$json = '[{"id":1,"name":"Books","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"200.0000"}],"tax":[]},{"id":2,"name":"pencil","description":null,"reference":null,"status":"active","category":{"id":"5048","name":"Ventas"},"price":[{"idPriceList":"1","name":"General","type":"amount","price":"5000.0000"}],"tax":[]}]';

$arr = json_decode($json, true);

$id = $arr[0]['id'];
$name = $arr[0]['name'];
print("$id $name\n");

Ouput:

1 Books

Кстати, моя версия

PHP 5.6.30 (cli) (built: Aug  8 2017 12:20:45)
0 голосов
/ 10 мая 2018

Используйте json_decode().Если вы хотите просмотреть объект php, чтобы лучше понять, как его использовать, попробуйте

<code>echo '<pre>';
echo print_r(json_decode($jsonStr, true));
echo '
';
0 голосов
/ 10 мая 2018

Вы можете использовать метод json_decode ()

Пожалуйста, обратитесь по этой ссылке http://php.net/manual/en/function.json-decode.php

...