JSON-Kodierung mit backslashes
Ich m mit Alamofire und SwiftyJSOn zu Parsen von JSON-Ausgabe. Es funktioniert sehr gut jedoch geben einige Websites, die json mit maskierten Ausgabe. Ich benutze Alamofire wie unten
Alamofire.request(.POST, url, parameters: param, encoding: .JSON)
.responseJSON { (req, res, json, error) in
var json = JSON(json!)
Website gibt mir JSON-Ergebnis mit maskierten string so SwiftyJSON nicht entschlüsseln. Wie kann ich umwandeln unten
{
"d": "{\"UniqeView\":{\"ArrivalDate\":null,\"ArrivalUnitId\":null,\"DeliveryCityName\":null,\"DeliveryTownName\":null},\"ErrorMessage\":null,\"Message\":null,\"IsFound\":false,\"IsSuccess\":true}"
}
etwas wie
{
"d": {
"UniqeView": {
"ArrivalDate": null,
"ArrivalUnitId": null,
"DeliveryCityName": null,
"DeliveryTownName": null
},
"ErrorMessage": null,
"Message": null,
"IsFound": false,
"IsSuccess": true
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, Sie haben zu Dekodieren zweimal: die Verpackung Objekt und seinen Inhalt.
@ericd Kommentare hat mir geholfen, das Problem zu lösen. Ich akzeptierte seine Antwort für diese Frage. Da bin ich mit Alamofire für den asynchronen Betrieb, und SwiftyJSON, den ich nicht nutzen konnte seinem code. Hier ist der code mit Alamofire und SwiftyJSON.
Viele Leute haben Probleme die Unterscheidung zwischen dem, was Sie bekommen und was Ihr system druckt. So erste Schritt ist, dass Sie brauchen, um herauszufinden, was genau Sie erhalten, und ob oder nicht diese escape-Zeichen werden nur ein Artefakt der Sie drucken.
Wenn dies ist, was Sie tatsächlich erhalten, dann wird der server geschickt hat Sie ein Wörterbuch mit einer einzigen Taste "d" und ein string, und der string enthält die serialisierten Daten. In diesem Fall, konvertieren Sie die Zeichenfolge in NSData und Schiebe Sie in NSJSONSerialization, die schalten Sie es in das Wörterbuch ein, das Sie möchten. Dies ist eine ziemlich dumme Art und Weise zu übermitteln, die JSON-Daten, aber es passiert.
Hier ist ein weiterer Ansatz für Swift 4 - Mit kodierbar
Diese wurde von json, die ich erhielt:
Den JSON-Teil mit backslashes ist gleich diesem:
- Und dies war der code, den ich verwendet:
- Und das ist der trick:
ich benutze einige benutzerdefinierte Funktion, diese Arbeit zu tun:
Ich hoffe es hilft 😉
Ich verbrachte viel zu lange, um herauszufinden, das gleiche Problem. Hier ist, wie ich es gelöst.
Ich habe ein Netzwerk-manager, wenn Sie aufgerufen wird, gibt eine Antwort zurück von [Alle]?
Ich eine Schleife durch jeden Datensatz umwandeln in JSON, aber das nicht erkennen der inhärenten dictionary-Struktur in diesem Fall.
So, ich Reiß den rawString und verwenden Sie dann analysieren. Dieser erkennt das Wörterbuch.
Von dort aus sollten Sie in der Lage sein, es zu benutzen, wie Sie möchte. In meinem Beispiel gebe ich die Daten in ein Daten-Modell (MyApi),