2016-08-27 5 views
1

ich ein kleines Snippet üblichen Code schreiben, aber festgestellt, dass mein Code nicht Hex-Daten vom Server mit dieser Codezeile zurück:Verschiedene Konsolenausgangsdaten über NSData und Daten (Xcode 8 Beta 6, Swift 3)

let currentData = try! Data(contentsOf: fullURL!) 
print("currentData=", currentData) 

Und die Ausgabe:

currentData= 24419 bytes 

ich habe versucht, Leos Kommentar Link zu verwenden:

stackoverflow.com/q/39075043/2303865

Ich habe etwas hex Daten ohne Leerzeichen, und Validator (http://jsonprettyprint.com) kann es nicht erkennen und gibt null zurück.

+0

Sie waren wahrscheinlich (ab) verwenden die Tatsache, dass die Beschreibung Methode von NSData gibt einen "Hex-Dump", die nicht mehr für Daten gilt. Aber die Daten sind da. Warum denkst du ist es nicht und was willst du eigentlich erreichen? –

+0

@MartinR Ich möchte nur Daten und dann JSONSerialization verwenden, um es in JSON-Format zu bekommen. –

+0

Und 'JSONSerialization.jsonObject (mit: currentData)' funktioniert nicht? Welches Ergebnis bekommst du und was erwartest du? –

Antwort

5

Lassen Sie uns versuchen, die verschiedenen Probleme hier zu sortieren und die obigen Kommentare zusammenzufassen.

Die description Methode von Data druckt nur eine kurze Zusammenfassung "NNN Bytes", und kein Hex-Dump wie NSData tat

let o = ["foo": "bar"] 
let jsonData = try! JSONSerialization.data(withJSONObject: o) 

print(jsonData) // 13 bytes 

Sie können durch Brücken zu NSData (source) einen Hex-Dump erhalten :

print(jsonData as NSData) // <7b22666f 6f223a22 62617222 7d> 

oder durch eine Erweiterungsmethode für Data (How to convert Data to hex string in swift) zu schreiben.

Aber das ist eigentlich nicht das eigentliche Problem. Der JSON-Validator muss die JSON als Zeichenfolge, nicht als Hex-Dump (source):

print(String(data: jsonData, encoding: .utf8)!) // {"foo":"bar"} 

und die JSON-Daten in ein Objekt deserialisieren Sie keine der oben genannten brauchen würden und nur Call

let obj = try JSONSerialization.jsonObject(with: jsonData) 
Verwandte Themen