我有一個非常簡單的模型struct
Student
其中只有兩個屬性firstName
和lastName
:正如你看到的上面JSON數據包含在我的簡單的情況下,特殊字符
struct Student {
let firstName: String
let lastName: String
init(_ firstName: String, _ lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
// Convert to json data
func toData() -> Data? {
var json = [String: Any]()
let mirror = Mirror(reflecting: self)
for child in mirror.children {
if let key = child.label?.trimmingCharacters(in: .whitespacesAndNewlines) {
json[key] = child.value
}
}
do {
return try JSONSerialization.data(withJSONObject: json, options: [])
} catch {
print("\(error.localizedDescription)")
}
return nil
}
}
,我創建了一個toData()
功能,我使用將模型對象轉換爲我的HTTP請求主體的JSON數據。
創建Student
實例是:
let student = Student("John", "Smith")
我JSON數據是:
let jsonData = student.toData()
後來我被設置爲我的URLRequest
體:
request.httpBody = jsonData!
然而,後端團隊總是看到:
{\"firstName\":\"John\", \"lastName\":\"Smith\"}
但是後端期待:
{"firstName":"John", "lastName":"Smith"}
我肯定它不是後端問題。看起來像我的toData()
功能需要改進。但我不知道該怎麼做。有人能幫助我嗎?
可能的複製[如何防止NSJSONSerialization在URL中添加額外的轉義](https://stackoverflow.com/questions/19651009/how-to-prevent-nsjsonserialization-from-adding-extra-escapes-in-url) – the4kman
爲什麼你不生成t他手動JSON字典,手動生成JSON,然後反序列化和打印它似乎給出了正確的結果。如果你的真實類在很多領域都變得更復雜,你可以使用像ObjectMapper這樣的第三方庫來解決這個問題,或者等待Swift4的Codable協議。 –
後端團隊看到的** JSON **'{\「firstName \」:\「John \」,\「lastName \」:\「Smith \」}'是有效的'JSON'格式。那有什麼問題? – nayem