WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Radbrytningar försvinner med json_decode (php) (https://www.wn.se/forum/showthread.php?t=1046272)

radioaktivitet 2011-02-02 07:11

Radbrytningar försvinner med json_decode (php)
 
Jag använder json_encode för att encoda min data. Får då denna text:

Citat:

[{"test":"Rad.\n\nBrytning"}]
Men när jag använder json_decode så är radbrytningarna inte med. Jag får ut "Rad.Brytning"

Vad gör jag för fel?

coredev 2011-02-02 09:05

Kan detta vara relevant för dig?
http://stackoverflow.com/questions/4...wlines-in-json

eliasson 2011-02-02 10:48

Märkligt att inte json_encode() har stöd för att escapa bl.a newline.

Clarence 2011-02-02 12:03

json_encode och json_decode har normalt sett inga problem med radbrytningar. Jag har aldrig upplevt det och använt funktionerna ett oräkneligt antal gånger.

Det allra vanligaste problemet skulle väl vara att man tittar på resultatet som ett html-dokument och därför inte ser radbrytningen om man inte visar källa. Men posta hela din kod så går det kanske lättare att identifiera ditt problem.

Jine 2011-02-02 13:29

Kod:

<?php

$str = "En string med

radbrytningar";

echo $str;

echo "\n--------------------\n";

$enc = json_encode($str);
echo $enc;

echo "\n--------------------\n";

echo json_decode($enc);

echo "\n--------------------\n";

Jag kan inte återskapa problemet iaf.

OM du däremot behöver ha (i klartext) "\n" i faktiska resultatet, så måste du givetvis escapa dom.

Dvs vill ha ut Rad.\n\nBrytning istället för faktiska radbrytningarna.

coredev 2011-02-03 09:53

Det står inte rätt ut i json-specen att json hanterar just radbrytningar (t.ex. Line feed 0x0A + Carriage return 0x0D) i strängar, men generellt så skall alla unicode-tecken bevaras korrekt. Kontrolltecken skall dock escapas och det bör PHP självt fixa i sin implementation.

http://www.ietf.org/rfc/rfc4627.txt?number=4627

Kan testas rätt enkelt genom att splitta strängen och sedan skriva ut varje teckenvärde för sig - innan och efter json encode / decode.

Hur förväntade du dig att resultatet skulle se ut?
Kod:

Rad.\n\nBrytning
eller
Kod:

Rad.

Brytning


KarlRoos 2011-02-03 15:16

Om du förväntar dig att \n skall skrivas ut så kan du pröva att lägga resultatet från json_decode() i <pre>-taggar för att se om det blir radbrytningar.


Alla tider är GMT +2. Klockan är nu 23:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson