Autor Zpráva
Musilda
Profil
Hezký den,

potřebuji načíst json, který je již vygenerovaný do souboru. Problém je v tom, že v něm jsou html tagy pto obrázky:

"thumb":"<img width=\"545\" height=\"327\" data-src=\"https:\/\/www.example.com\/wp-content\/uploads\/2020\/03\/shop.png\" class=\"lazyimage wp-post-image\" alt=\"\" \/>","categories"

a při parseJson to vyhodí chybu Unexpected nuber in position... což, jak předpokládám je díky těm uvozovkám width=\"545\". Lze toto nějak vyřešit?

Děkuji za každou radu.
Kajman
Profil
Jen ten vygenerovaný json validní? V uvedeném kousku chyba nevypadá, ale je možná jinde.
Musilda
Profil
Json je validní, je generovaný z pole v PHP, ale při parsování ve scritpu to padne na té uvozovce width=\"545\.
Radek9
Profil
Musilda:
To ne, to je escapované správně. Jak vypadá celý ten JSON? Čím ho parsuješ? (JSON.parse?)
Musilda
Profil
Ano, pomocí JSON.parse. Mám v kódu dva jsony, oba jsou z php pole pomocí json_encode a zlobí jen tento, kde je html kód obrázku.
Radek9
Profil
Musilda:
Není možné, že se před výpisem to escapování zruší? V tu chvíli by se ukončil string a za ním by následovalo číslo.

Holt potřebujeme víc informací. Jak ten JSON přesně vypisuješ? Jak přesně vypadá, když ho načítáš v JS? Ideální by byl prostě export toho, co reálně načítáš do JS.
Musilda
Profil
Takto vypadá json před tím, než ho pošlu do JSON.parse. Snad bude stačit jen úryvek, protože je to dost velké.

{"17299":{"permalink":"https://www.dognet.sk/kampane/123led-sk/","title":"123led.sk","thumb":"<img width="545" height="327" data-src="https://www.dognet.sk/wp-content/uploads/2018/11/123led-moje-logo.png" class="lazyimage wp-post-image" alt="" />","categories":{"elektro":"Elektro"},"commision":"až 5%"},"40703":{"permalink":"https://www.dognet.sk/kampane/1autodiely-sk/","title":"1autodiely.sk","thumb":"<img width="545" height="327" data-src="https://www.dognet.sk/wp-content/uploads/2019/02/1autodiely-logo.png" class="lazyimage wp-post-image" alt="" />","categories":{"ine":"Iné"},"commision":"až 5%"},"5420":{"permalink":"https://www.dognet.sk/kampane/kampan-2jakost-cz/","title":"2jakost.cz","thumb":"<img width="545" height="327" data-src="https://www.dognet.sk/wp-content/uploads/2017/07/2jakostt.png" class="lazyimage wp-post-image" alt="" />","categories":{"elektro":"Elektro"},"commision":"7%"},"1689":{"permalink":"https://www.dognet.sk/kampane/kampan-4home-cz/","title":"4Home.cz","thumb":"<img width="545" height="327" data-src="https://www.dognet.sk/wp-content/uploads/2015/04/4home-1.png" class="lazyimage wp-post-image" alt="" />","categories":

znění chyby je:

Unexpected number in JSON at position 106
Kajman
Profil
Všimněte si, že teď tam escapování není, proto to padá. Jak obsah souboru přenášíte pro použití v javascriptu?
Musilda
Profil
No tak to je jasný, připadám si jak idiot. Vypisuji to pomocí file_get_contents a echo do <srcipt> tagu v těle stránky.
Radek9
Profil
Musilda:
To by neměl být ten problém. Tohle prostě vypadá na to, že tam někde používáš stripslashes nebo podobnou funkci.
Kajman
Profil
Abyste mohl použít JSON.parse, tak to musí být vložené do javascriptu a escapováno ještě jednou navíc jako string.

Např.

<script>
  var data = JSON.parse(<?php echo json_encode(file_get_contents(...)); ?>);
</script>

Pokud jsou data jistojistě validní objekt, můžete to dát bez encodování a dekódování. Ale první varinata je více chybyvzdorná.
<script>
  var data = <?php echo file_get_contents(...); ?>;
</script>
Musilda
Profil
Díky všem, myslím, že teď už si s tím poradím, když jste mi pomohli pochopit problém.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0