2014-11-06 24 views
8

Abbiamo una forma che ha un lungo paragrafo per un'applicazione sciencifica che contiene caratteri come il simbolo beta (ß-arrestin) ecc. Abbiamo un servizio JSON in esecuzione su Mule che prende i dati e persiste in un database Oracle. Questo particolare elemento con un lungo paragrafo mi sta dando un errore in RAML/JSON. Di seguito è riportato l'erroreCome scappare i caratteri speciali in JSON

com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 9)): has to be escaped using backslash to be included in string value 

L'elemento di forma a cui scrivono gli scienziati non ha controllo. Quindi, da parte di Mule, come possiamo sfuggire questi personaggi in modo automatico come java ha URLEncoded. Molte grazie

risposta

1

Nel tuo caso sembra che i dati in entrata non siano corretti. Deve essere in an encoding supported by the JSON spec: UTF-8 (predefinito), UTF-16 o UTF-32. Quindi non sono sicuro se il seguente è applicabile. Tuttavia ...

Per la maggior parte delle app mi sento di raccomandare lo JSON to Object mapping, che si prenderà cura della fuga. Altrimenti, puoi chiamare direttamente Jackson (la libreria JSON usata da Mule) String escape method.

Ecco un esempio che è possibile utilizzare in MEL. String.valueOf è necessario perché quoteAsString restituisce char[]:

<configuration> 
    <expression-language> 
    <import class="org.codehaus.jackson.io.JsonStringEncoder" /> 
    <global-functions> 
     def quoteJSONString(s) { 
     String.valueOf(JsonStringEncoder.getInstance().quoteAsString(s)) 
     } 
    </global-functions> 
    </expression-language> 
</configuration> 
2

Alla destinazione è possibile ricevere i dati come testo/semplice.

Clean eseguendo:

input.replaceAll("\\p{Cc}", ""). 

riconvertirlo dati JSON utilizzando qualsiasi libreria JSON:

JSONObject inputParams = JSONObject.fromObject(input); 

Speranza che aiuta.

Problemi correlati