online escaped escape java json grails unicode-escapes stringescapeutils

java - escaped - Escape String in Grails para evitar el error JSON



json to json string online (0)

Tengo pocas cuerdas como

"12.10 On-Going Submission of ""Made Up"" Samples." 10. PRODUCT STANDARDS; APPROVAL.

que represento como JSON en griales. Las comillas y cualquier otro posible carácter especial me están dando problemas, es decir, hacen que el JSON sea inválido al devolver una respuesta del servicio REST. ¿Cómo puedo solucionar esto? He intentado algunas cosas pero nada parece funcionar:

//text: java.net.URLEncoder.encode(artifact.text, "UTF-8"), //Loses the original format //text : artifact.text.encodeAsJavaScript(), // give problem with ; //text: artifact.text.encodeAsHTML(), // gives &qoute(not wanted) in the text instead of " //text: StringEscapeUtils.escapeJava((String)artifact.text), //some error // text : artifact.text // the json gets cut at the string

Tengo una pregunta similar aquí para darte la idea de qué es exactamente lo que estoy enfrentando. El fragmento de código:

def index() { def document def artifacts def documentId def documentName def artifactType def artifactStatus def includeClassifications def classifications def mapOfAtifactTypes = [:] def listOfArtifacts = [] def listOfClassifications = [] def rtnVal = [:] documentId = params.documentId documentName = params.documentName try { if (! rtnVal?.msg ) { //if we dont'' have a message yet it means we don''t yet have a failure so we can continue if (document){ rtnVal.documentName = document.docName if (artifactType) { artifacts = Artifact.findAllByDocumentAndArtifactType(document, artifactType) } else { artifacts = Artifact.findAllByDocument(document) } } else { artifacts = Artifact.list(); } if (artifacts) { def artifactToAdd = [ documentId: artifact.documentId, documentName: artifact.document.docName, artifactId: artifact.id, //URLEncode so slashes and other control characters don''t cause the rendered JSON to truncate //TODO look up the proper way to encode text prior to JSON rendering //text: java.net.URLEncoder.encode(artifact.text, "UTF-8"), //text : artifact.text.encodeAsJavaScript(), //text: artifact.text.encodeAsHTML(), //text: StringEscapeUtils.escapeJava((String)artifact.text), text: artifact.text.replace("/"","///""), status: artifact.status ?: Artifact.ArtifactStatus.FOR_REVIEW.value, hasClassification: listOfClassifications ? true : false ]; listOfArtifacts.add(artifactToAdd) } rtnVal.listOfArtifacts = [] mapOfAtifactTypes.each { entry -> rtnVal.listOfArtifacts.add([ type: entry.key, artifacts: entry.value ]) } } } catch (Exception e) { e.printStackTrace() rtnVal = [ status: "Bad request", msg: e ] render e } render rtnVal as JSON }