javascript håndtere JSON

Tags:    javascript json

Kan Javascript selv håndtere json på en intelligent måde, eller skal jeg kode det selv?
Jeg prøver at bruge jQuery til at parse det, men den siger "SyntaxError: JSON.parse: unexpected character".
Dog hvis jeg ser responset fra min action så ser JSON resultatet pænt ud i firebug.

console.log(response_data)
giver
<pre>{"Navn":"","Mobilnummer":"","Telefonnummer":"","Email":"","FormatString":"","RelativePath":"5images.jpg"}</pre>
Som undrer mig fordi når jeg ser i firebug, under response så vises
{"Navn":"","Mobilnummer":"","Telefonnummer":"","Email":"","FormatString":"","RelativePath":"5images.jpg"}
og under JSON-tabben vises de forskellige properties korrekt, men med rød tekst.
Fx:
Navn ""
Her er de to " røde.

Mit problem er at når jeg har modtaget mine data så kan jeg ikke kalde properties på det for at få de forskellige værdier :(



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Hvis console.log(response_data) udskriver:

<pre>{"Navn":"","Mobilnummer":"","Telefonnummer":"","Email":"","FormatString":"","RelativePath":"5images.jpg"}</pre>

Så bør du nok fjerne <pre> </pre>... :)

Umiddelbart kan du teste dit JSON ved at skrive, i browserens consol:
Fold kodeboks ind/udKode 
Bemærk parenteserne.

Dog er der noget med at JSON.parse() ikke er så glad for citationstegn rundt om key ved key/value pairing.



Indlæg senest redigeret d. 15.04.2013 23:05 af Bruger #10216
Det viser sig at være fordi at det kode jeg gør brug af for at kunne uploade bruger en iframe, og derfor laver den det om til et html-response fremfor JSON. Derfor pakker den selv strengen ind i <pre> fordi det er en streng, og der skulle derfor tilføjes "html/text" til response-type for at den så den tekst der kom tilbage som html/text og derfor ikke pakkede den ind i <pre>-tags.

Nu ser det faktisk ud som om at jeg får ren JSON tilbage i Chrome (skiftede fra FF fordi den netop skulle være mere aggresiv med disse <pre>-tags), men når jeg så trykker responseData.RelativePath så siger den "undefined".
Er det fordi at javascript ikke automatisk ser dette som et objekt og kan læse det? Altså så jeg skal parse det selv til noget javascript forstår?
Har prøvet eval ind i et objekt, men så stopper eksekveringen blot derfra i javascriptet :(



Dit responseData er rå tekst. Det er det eneste browseren ser. Den aner ikke hvad der skal gøres med det.

Du kan smide din JSON streng ind i var json = eval('('+json_string+')'); Så er du kørende på den front.
Læs mere her: http://www.json.org/js.html



Michael
Det virkede ikke, men hvis jeg brugte jQuery's $.ParseJSON(response_data) så havde jeg et objekt jeg kunne bruge med properties und alles.
Så nu virker det! Ej hvor er det fedt!

Der er ikke noget værre end at rode med noget i to dage og få grå hår af det lort bare ikke virker, men der er så hellere ikke noget bedre end når lortet så endeligt virker og man faktisk forstår hvad der skulle til for at få det løst og hvorfor det ikke virkede til at starte med! BOOJAA!

P.S. jQuery klarer det rigtigt fint med citationstegn rundt om key/value.



Indlæg senest redigeret d. 16.04.2013 00:18 af Bruger #17215
t