Nejde decodovat JSON z curl_exec

karel.nev
Člen | 21
+
0
-

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?

Marek Bartoš
Nette Blogger | 1280
+
+1
-

Zkus sem přidat ukázku, jak vypadá funkční a nefunkční verze.

karel.nev
Člen | 21
+
0
-

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)

CZechBoY
Člen | 3608
+
0
-

Standardní json_decode z PHP core ti projde?

karel.nev
Člen | 21
+
0
-

taky právě ne :( vypadá to, jak kdyby tam byl nějaký skrytý znak, který to shodí

David Matějka
Moderator | 6445
+
+1
-

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
+
0
-

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
+
+4
-

0xEFBBBF je BOM, nejspíš je v tom API někde v souboru s kódem a posílá se na výstup.

karel.nev
Člen | 21
+
0
-

díky moc za pomoc, opravdu tam jeden soubor byl s BOM a posílal to do výstupu.