Nel mio progetto ho bisogno di inviare un oggetto JSON nella chiamata API del servizio web. Ho convertito JSON dall'array.barre rovesciate "" aggiunte nella stringa JSON per il servizio web in swift
do {
let theJSONData = try NSJSONSerialization.dataWithJSONObject(
param ,
options: NSJSONWritingOptions(rawValue: 0))
var theJSONText : String = String(data: theJSONData,
encoding: NSASCIIStringEncoding)!
print(theJSONText)
theJSONText = theJSONText.stringByReplacingOccurrencesOfString("\\", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
print(theJSONText)
let newParam = ["ESignData":theJSONText]
} catch let error as NSError {
print(error)
}
si stringa di stampa correttamente come
{"EntNum":"47","JobNo":"1737753","ClientID":"100","HospNo":"1","QAReason":"","DoctorNo":"1694","Action":"Sign"}
{"EntNum":"47","JobNo":"1737753","ClientID":"100","HospNo":"1","QAReason":"","DoctorNo":"1694","Action":"Sign"}
Ora Quando provo a trasmettere questo dizionario newParam
nella chiamata API, che contiene "\" nei parametri di stringa di stringa JSON.
WebService.PostURL(mainLink, methodname: ESIGNTHISDOC, param: newParam, userName: AUTH_USERNAME, password: AUTH_PWD, CompletionHandler: { (success, response) in
})
E in quel metodo di servizio Web ho param di stampa.
Param = {
ESignData = "{\"EntNum\":\"47\",\"JobNo\":\"1737753\",\"ClientID\":\"100\",\"HospNo\":\"1\",\"QAReason\":\"\",\"DoctorNo\":\"1694\",\"Action\":\"Sign\"}";
}
Ora, in questo so che è evidente in iOS a causa di "nella stringa. Ora il problema è che ci sono un sacco di API che lavorano in applicazione android, e lo sviluppatore API non vuole aggiornare il suo codice secondo noi.
so che questo problema si verifica a causa di aggiunta di stringa JSON nel dizionario come parametro. Ma non ho adeguata giustificazione che così, se qualche prova sarà anche utile per me per convincerlo.
qualsiasi soluzione per convertire la stringa JSON senza backslash in iOS? Devo risolvere il problema da parte mia, se possibile. Qualsiasi aiuto sarà apprezzato
EDIT:
Sul lato server ha bisogno come
ESignData = {"EntNum":"47","JobNo":"1737753","ClientID":"100","HospNo":"1","QAReason":"","DoctorNo":"1694","Action":"Sign"}
Se mi passa questo come parametro nella POSTINO di quanto non dà messaggio di successo. Ma non con il nostro oggetto con "\" in esso.
EDIT 2:
Ora la stampa del newParam
dizionario:
print(newParam)
print("-------------------------")
print(newParam["ESignData"])
e tronchi:
["ESignData": "{\"EntNum\":\"47\",\"JobNo\":\"1737754\",\"ClientID\":\"100\",\"HospNo\":\"1\",\"QAReason\":\"\",\"DoctorNo\":\"1694\",\"Action\":\"Sign\"}"]
-------------------------
Optional("{\"EntNum\":\"47\",\"JobNo\":\"1737754\",\"ClientID\":\"100\",\"HospNo\":\"1\",\"QAReason\":\"\",\"DoctorNo\":\"1694\",\"Action\":\"Sign\"}")
E per il debug:
Printing description of newParam:
▿ 1 elements
▿ [0] : 2 elements
- .0 : "ESignData"
- .1 : "{\"EntNum\":\"47\",\"JobNo\":\"1737754\",\"ClientID\":\"100\",\"HospNo\":\"1\",\"QAReason\":\"\",\"DoctorNo\":\"1694\",\"Action\":\"Sign\"}"
Così dimostra che è nel nostro dizionario. Tutti "sono uniti da \"
Io non so come si è stampato il parametro sul lato server, ma vedendo la racchiude ' "'s, apparentemente a due caratteri-sequenza' \" 'Rappresenterebbe un singolo carattere' ''. Molti output di debug utilizzano questo tipo di notazione "String-letteral-like". Credo che i tuoi parametri siano stati inviati al server con successo – OOPer
@OOPer Questo è stampato dalla nostra parte lato server, Abbiamo appena ricevuto la risposta di errore perché non possono recuperare i parametri richiesti – Max
Quindi, il motivo non è la barra rovesciata. Controllare il riferimento API se il 'newParam' è valido per l'API. – OOPer