Nejde decodovat JSON z curl_exec
- karel.nev
- Člen | 21
Nesetkal se někdo s tím, že mu nejde decodovat json z curl_exec? Vyhazuje error 4, že je špatna syntaxe, ale je správná.. Když si řetězec dumpu a vložím přímo do Json::decode, tak to funguje. Napřímo ale proměnná z funkce curl_exec nefunguje.. nemá někdo nějaký tip, co s tím?
- karel.nev
- Člen | 21
toto vyhodí error:
curl_setopt($ch,CURLOPT_URL, $api);
curl_setopt($ch,CURLOPT_POST, count($req));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
//když vpíšu $result -> "{"status":"test"}"
$result = Json::decode($result);
když udělám toto, tak to funguje:
$result = '{"status":"test"}';
Json::decode($result);
jediný co mě napadá, tak že je tam problém s těmi závorkami, že to escapuje s dvojitými, jako jsou uvnitř a to vyhodí chybu.
Editoval karel.nev (23. 9. 2020 20:31)
- David Matějka
- Moderator | 6445
zkus si dumpnout ten string skrz bin2hex
a uvidis vsechny znaky,
co tam jsou (a pod to si dumpni tu variantu, ktera ti funguje)
- karel.nev
- Člen | 21
díky moc tip.. byl tam opravdu znak, který tam nemá co dělat..
když vypíšu result z curl_exec, tak to vypíše „efbbbf7b22737461747573223a2254657374227d“, a když si vypíšu řetězec, tak „7b22737461747573223a2274657374227d“, přebývý tam tedy neviditelný tento znak: „efbbbf“, netušíte, čím by to mohlo být?
data posílám normálně takhle, určitě tam ten znak není.. přidá si to asi někde tak funkce sendJson
$dat = ['status' => 'Test'];
$this->sendJson($dat);
- jiri.pudil
- Nette Blogger | 1032
0xEFBBBF je BOM, nejspíš je v tom API někde v souboru s kódem a posílá se na výstup.