2013-05-16 56 views

risposta

54

Uso replace:

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

// "House" 
// House 

Annotare il g alla fine significa "globale" (sostituire tutti).

+1

Impressionante!Questo è esattamente quello che stavo cercando. Sostituisco le virgolette doppie e provo con alcuni personaggi. Bello! Grazie!! – AlvaroAV

+1

Regex, sebbene funzioni, può causare molti sprechi di memoria. Penso che l'utente non debba semplicemente usare JSON.stringify() o se è una risposta JSON che è solo una frase, usa JSON.parse(). Quelle regex si sommano quando le cose vanno in scala. Sto solo dicendo –

+0

Non taglia le virgolette di inizio/fine. Strisce tutte le virgolette. –

5

Il metodo stringfy non è per l'analisi di JSON, è per trasformare un oggetto in una stringa JSON.

JSON viene analizzato da jQuery quando lo si carica, non è necessario analizzare i dati per utilizzarlo. Basta usare la stringa nei dati:

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

Io non credo che ci sia la necessità di sostituire le citazioni, si tratta di una stringa JSON perfettamente formato, è solo bisogno di convertire la stringa JSON in un articolo spiega perfettamente l'object.This situazione: Link

esempio:

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

Quello che state facendo è fare una stringa JSON nel tuo esempio. O non utilizzare lo JSON.stringify() o se si hanno sempre dei dati JSON che tornano e non si desiderano citazioni, utilizzare semplicemente JSON.parse() per rimuovere le citazioni relative alle risposte JSON! Non usare regex, non è necessario.

13

per nicchia ha bisogno quando si sa che i dati come il tuo esempio ... questo funziona:

JSON.parse(this_is_double_quoted); 

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

Ho anche avuto questo problema, ma nel mio caso non ho voluto usare una regex, perché il mio Il valore JSON può contenere virgolette. Spero che la mia risposta aiuti gli altri in futuro.

Ho risolto questo problema utilizzando una sezione di stringa standard per rimuovere il primo e l'ultimo carattere. Questo funziona per me, perché ho usato JSON.stringify() sul textarea che lo ha prodotto e, di conseguenza, so che avrò sempre i " ad ogni estremità della stringa.

In questo esempio generalizzato, response è l'oggetto JSON restituito da AJAX e key è il nome della mia chiave JSON.

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

ho usato in questo modo, con una regex replace per conservare le interruzioni di riga e scrivere il contenuto di tale chiave per un blocco di paragrafo nel mio HTML:

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

In questo caso, $('#description') è la tag di paragrafo che sto scrivendo a. studyData è il mio oggetto JSON e description è la mia chiave con un valore a più righe.

+0

Questo è esattamente quello su cui stavo lavorando ... molto utile, grazie. :) – dav

Problemi correlati