2014-10-07 21 views
6

Chcę utworzyć ciąg JSON wewnątrz żądania JSON. Oto mój kod,JSON String wewnątrz JSON

Fiddle

JS

var x = { 
    a: 1, 
    b: 'a sample text', 
}; 

var request = { 
    t: JSON.stringify(x), 
    c: 2, 
    r: 'some text' 
}; 

console.log(request); 

Czy ktoś może mi pomóc w jaki sposób uciec cudzysłów?

Konsola

Object { 
    t: "{"a":1,"b":"a sample text"}", //This creates a problem, double quotes inside double quotes. 
    c: 2, 
    r: "some text" 
} 

Z góry dzięki.

+1

Nie masz problemu. Jeśli wykonasz 'JSON.stringify (request)' otrzymasz całkowicie poprawny obiekt JSON. Możesz wtedy 'JSON.parse' i potwierdzić, że otrzymałeś identyczny obiekt do oryginału. –

+1

To pytanie wydaje się być nie na temat, ponieważ tutaj nie ma problemu. –

+0

Prawidłowe usuwanie cudzysłowów jest problemem tylko przy użyciu ciągu ** literałów **. Musisz uciec z nich, aby * parser * wiedział, gdzie kończy się wartość ciągu. Jednak generujesz ciąg * programowo *, parser nie jest już w tym momencie zaangażowany. –

Odpowiedz

5

to tylko sposób konsola przeglądarka pokazuje wartość ciąg, zawijając w podwójne cudzysłowy dla wyniku. Jest to całkowicie normalne i nic nie jest zepsute.

Można go przetestować, przekształcając ciąg JSON z powrotem w obiekt i używając właściwości.

console.log(JSON.parse(request.t).b); // a sample text 
+0

console.log (JSON.parse (request.t)); powinno wystarczyć, jeśli budujesz json wewnątrz innego json. – webjockey

3

Nie ma problemu. To tylko Twój console.log, który pokazuje wszystkie ciągi poprzez proste ograniczenie z ".

Jak to powiedzieć request przedmiot jest używany w żądaniu JSON, gdzie będzie JSON.stringify ed innym razem, z ważnego wyniku

{"t":"{\"a\":1,\"b\":\"a sample text\"}","c":2,"r":"some text"} 
Powiązane problemy