Mam dość sporego JSON`a (172 MB) którego oczywiście chcę jakoś przeczytać, jednak json_decode() zwraca błąd nr. 5 - JSON_ERROR_UTF8 "Nieprawidłowe znaki UTF-8. Możliwe, że nieprawidłowo zakodowane". Większość edytorów pc/online gubi się przy tak dużym pliku (albo zżera mi ram i procesor, albo otwiera się np. w sublime text aczkolwiek poruszanie się po nim nie należy do przyjemnych - jedno przewinięcie kilka sekund i kolejne). W jaki inny sposób mogę zidentyfikować i poprawić ten błąd? Macie jakieś pomysły?
PS. dokładnie jest to geojson - ale struktura jest taka sama jak json.
Próbowałem z :
$json = utf8_encode($json); $json = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($json)); $json = mb_convert_encoding($json, "UTF-8", "auto");
jednak bez efektów.
Ed. 1
mb_detect_encoding zwraca UTF-8
Ed. 2
Podzieliłem go na 180 partów. Żeby łatwo wyłapać początek i koniec:
Początek - http://wklej.to/LtAQp
Koniec - http://wklej.to/d1zu4
Struktura wydaje się być w porządku - tylko ten problem z kodowaniem.
Ed. 3
Problem rozwiązany.
Ed. 4
Jednak problem dalej istnieje.
Główny problem to json_decode który przy pliku *.json ważącym 180 MB potrafi zeżreć kilka GB ram-u (lokalnie serwer padł przy 2 GB, drugi serwer zatrzymał się na 3.5 GB). Wiecie czemu tak jest?
Rozwiązaniem było stremowanie pliku *.json tak aby ograniczyć zużycie RAM`u.
Używałem tych dwóch bibliotek:
https://github.com/salsify/jsonstreamingparser
- Po ok. 30 minutach skrypt się wysypał z tym samym skutkiem (brak RAM`u).
https://github.com/kuma-giyomu/JSONParser
- Po ok. 10 minutach skrypt się wysypał "Terminated"
Spotkał się ktoś z Was kiedyś z takim problemem? Macie jakieś pomysły?
@up
pomoc nadal potrzebna, problem jednak nie jest rozwiązany a może ktoś coś podpowie
