2013-05-16 16 views
33

Używam JQuery, aby uzyskać dane Json, ale dane, które wyświetlają, mają podwójne cytaty. Czy istnieje funkcja usuwania?usunąć podwójne cytaty z Json zwracają dane przy użyciu Jquery

$('div#ListingData').text(JSON.stringify(data.data.items[0].links[1].caption)) 

zwraca:

"House" 

Jak mogę usunąć podwójny cudzysłów? Twoje zdrowie.

+1

Funkcja wymiany javascript powinna działać –

Odpowiedz

54

Zastosowanie replace:

var test = "\"House\""; 
console.log(test); 
console.log(test.replace(/\"/g, "")); 

// "House" 
// House 

Zanotuj g na końcu oznacza "globalne" (wymienić wszystkie).

+1

Awesome!To dokładnie to, czego szukałem. Zastępuję podwójne cudzysłowy i próbuję użyć niektórych znaków. Miły! dzięki!! – AlvaroAV

+1

Regex, mimo że działa, może powodować marnowanie pamięci. Myślę, że użytkownik powinien po prostu nie używać JSON.stringify() lub jeśli jest to odpowiedź JSON, która jest tylko zdaniem, użyj JSON.parse(). Te wyrażenia sumują się, gdy rzeczy się skalują. Tylko mówię. –

+0

Nie przycina początkowych/końcowych ofert. Usuwa wszystkie cytaty. –

5

Metoda stringfy nie służy do analizowania JSON, służy do przekształcania obiektu w łańcuch JSON.

Po załadowaniu JSON jest analizowany przez jQuery, nie trzeba analizować danych, aby go użyć. Wystarczy użyć ciąg w danych:

$('div#ListingData').text(data.data.items[0].links[1].caption); 
0

nie sądzę istnieje potrzeba zastąpienia żadnych cytatów, jest to doskonale ukształtowana ciąg JSON, wystarczy przekonwertować ciąg JSON w artykule object.This doskonale wyjaśnia sytuacja: Link

przykład:

success: function (data) { 

     // assuming that everything is correct and there is no exception being thrown 
     // output string {"d":"{"username":"hi","email":"[email protected]","password":"123"}"} 
     // now we need to remove the double quotes (as it will create problem and 
     // if double quotes aren't removed then this JSON string is useless) 
     // The output string : {"d":"{"username":"hi","email":"[email protected]","password":"123"}"} 
     // The required string : {"d":{username:"hi",email:"[email protected]",password:"123"}"} 
     // For security reasons the d is added (indicating the return "data") 
     // so actually we need to convert data.d into series of objects 
     // Inbuilt function "JSON.Parse" will return streams of objects 
     // JSON String : "{"username":"hi","email":"[email protected]","password":"123"}" 
     console.log(data);      // output : Object {d="{"username":"hi","email":"[email protected]","password":"123"}"} 
     console.log(data.d);     // output : {"username":"hi","email":"[email protected]","password":"123"} (accessing what's stored in "d") 
     console.log(data.d[0]);    // output : { (just accessing the first element of array of "strings") 
     var content = JSON.parse(data.d);  // output : Object {username:"hi",email:"[email protected]",password:"123"}" (correct) 
     console.log(content.username);   // output : hi 
     var _name = content.username; 
     alert(_name);       // hi 

} 
1

Co robisz czyni ciąg JSON w swoim przykładzie. Albo nie używaj JSON.stringify() lub jeśli kiedykolwiek będziesz miał dane JSON wracające i nie chcesz cytatów, po prostu użyj JSON.parse(), aby usunąć cytaty dotyczące odpowiedzi JSON! Nie używaj wyrażenia regularnego, nie ma takiej potrzeby.

13

do niszy potrzebuje gdy znasz swoje dane jak twój przykład ... to działa:

JSON.parse(this_is_double_quoted); 

JSON.parse("House"); // for example 
2

miałem również na to pytanie, ale w moim przypadku nie chcę użyć regex, ponieważ mój Wartość JSON może zawierać cudzysłowy. Mam nadzieję, że moja odpowiedź pomoże innym w przyszłości.

Rozwiązałem ten problem, używając standardowego wycinka łańcucha, aby usunąć pierwsze i ostatnie znaki. To działa dla mnie, ponieważ użyłem JSON.stringify() na textarea, który go wyprodukował i dlatego wiem, że zawsze będę miał " s na każdym końcu ciągu.

W tym uogólnionym przykładzie, response jest obiektem JSON, który zwraca moja AJAX, a key jest nazwą mojego klucza JSON.

response.key.slice(1, response.key.length-1) 

Używałem go jak to z regex replace do zachowania podziałów wierszy i zapisać zawartość tego klucza do bloku ustęp w moim HTML:

$('#description').html(studyData.description.slice(1, studyData.description.length-1).replace(/\\n/g, '<br/>')); 

W tym przypadku $('#description') jest znacznik akapitu, do którego piszę. studyData to mój obiekt JSON, a description to mój klucz z wartością wielowierszową.

+0

To jest dokładnie to, nad czym pracowałem ... bardzo pomocne, dzięki. :) – dav

Powiązane problemy