zdeformowany JSON

MM
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Postów:86
0

Witam,

mam drobny problem ze zwracaniem przez php (a przynajmniej tak przeczuwam) zniekształconego JSONa. Generalnie do informacja zwrotna wygląda następująco:

-{"colA":"a","colB":"b","colC":"c","colD":null,"arr":[]}

Więc z php'a dostaję zwrot w postaci enterów oraz myślnika... Problem jest taki, że ja nie siedzę w technologiach webowych i taki zdeformowany JSON mocno mnie denerwuje bo nie wiem w którym miejscu powstaje. Wiem jak to mogę naprawić ale chciałbym poznać jakąś poradę aby wiedzieć co zrobić aby nie dopuścić do takich sytuacji. A teraz po kolei. mam taki kod ajax'owy:

Kopiuj
function EditNews(oID)
{
	if (oID !== null) {
		$.ajax({
			url: 'php/Test.php',
			cache: false,
			type: 'POST',
			data: {'someID': oID},
			dataType: 'json',
			success: function (response) {
				console.log(response);
			}
		});
	}
}

Następnie mam php'owy plik, w którym odwołuję się do klasy zwracającej obiekt. I ten obiekt jest zwracany:

Kopiuj
$test = new DBTest();
$conn = new DBConn();

$test = $conn->GetDataFromDB(intval($_POST['oID']));
echo json_encode($test);

echo zrwaca obiekt $test ale to co dostaję jako response już jest zdeformowane. W którym miejscu może powstać taki koszmar?

Adam Boduch
Porada: zmodyfikuj ten post i dodaj "zdeformowany" JSON
kult
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad rok
1
Kopiuj
json_encode()

przyjmuje dane wyłącznie w UTF8, więc pewnie w tym tkwi problem. Przekonwertuj tego stringa (lub jeśli to tablica, wszystkie stringi) do UTF8 i będzie ok.

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Rzeszów
1

Raczej wątpię w słuszność metody @kult, json encode przy nie-utf zapewne naśmieci i zepsuje kodowanie, ale nie sądzę, żeby miał wypluć nieprawidłowego jsona.
sprawdzisz to łatwo:
w Test.php zrób sobie na początku ob_start();, a tuż przed json_encode($test) wstaw ob_clean()

jak pomoże to szukaj które pliki dodają Ci te znaki


MM
Dzięki za info i porady - postaram się jak najszybciej sprawdzić co i gdzie sieje takimi śmieciami.
MM
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Postów:86
0

Udało sie. Dzięki ob_start() i ob_clean() json serializuje sie prawidłowo. Nie znalazłem jednak kawałka kodu, który generuje takie śmieci ale to juz moge na spokojnie przeszukać i wgrać z aktualizacja. Raz jeszcze dzięki :)

ŁF
Pewnie BOM - trzy bajty na początku plików, zwykle niewyświetlane w edytorach.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.