Ho appena iniziato a utilizzare Jackson a causa dell'integrazione con Spring Framework e ho riscontrato un problema con virgolette singole in un valore. Quando provo ad analizzare il JSON con jQuery nella pagina, ottengo un errore JavaScript "SyntaxError: missing) after argument list"
. Sono abituato a usare Gson per serializzare i miei oggetti e non ho incontrato questo problema poiché Gson sostituirà la citazione singola con Unicode \ u0027.serializzazione Jackson non gestisce correttamente virgolette singole
Ad esempio;
Java
public final class Person {
private String firstName;
private String lastName;
public Person() {}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
}
JSON
In Jackson [{"person":{"firstName":"James","lastName":"O'tool"}}]
In GSON [{"person":{"firstName":"James","lastName":"O\u0027tool"}}]
JavaScript;
// This is where the JavaScript fails with the Jackson serialized object
$.parseJSON('${requestScope.person}');
Ho cercato una soluzione, ma non riesco a trovarne una. Qualcuno sa se è possibile configurare Jackson per gestire le virgolette singole nello stesso modo in cui lo fa Gson?
Grazie per il vostro tempo.
Non provare ad emettere JSON in string letterali (sfuggirli ovviamente) e analizzarli. Basta emettere oggetti letterali! – Bergi
Spiacente, ho dimenticato di includere che questa non è una chiamata Ajax e l'analisi dell'oggetto JSON si verifica su un JSP. Se si trattasse di una semplice chiamata ajax, non ci sarebbe alcun problema. – Jason
No, stai provando ad analizzare una stringa JSON (erroneamente con caratteri di escape) con JavaScript (non JSP) – Bergi