我正在尝试将Swift Encodable结构呈现为以下JSON:
{
"userID": 1000142,
"emergencyContactData": {"contact":
[
{"firstName": "John"},
{"lastName": "Doe"},
{"email": "[email protected]"},
{"phone": "12345678901"}
]
}
}
我尝试了以下操作:
struct UserEmergencyContactRequest: Encodable {
var userID: String
var ecData: EmergencyContactData
}
struct EmergencyContactData: Encodable {
var contact: [[String: String]]
}
但是,单独的String:String字典条目不会呈现为JSON对象(无花括号)。我将如何更改[String:String]项,以便在将其呈现为JSON结构时将各个String:String值括在一组JSON大括号中?
Note:不,我不能更改服务以接受更好的格式,以处理旧版服务。
我认为问题在于您填充结构的方式(问题中未显示)。>>
这是您使用的错误代码,[[我猜。特别是错误是您填充
dictionaries
值的方式
let dictionaries = [["firstName" : "John", "lastName": "Doe", "email": "[email protected]", "phone": "12345678901"]]
let ecData = EmergencyContactData(contact: dictionaries)
let elm = UserEmergencyContactRequest(userID: "userID", ecData: ecData)
if
let data = try? JSONEncoder().encode(elm),
let string = String(data: data, encoding: .utf8) {
print(string)
}
{"userID":"userID","ecData":{"contact":[{"email":"[email protected]","firstName":"John","lastName":"Doe","phone":"12345678901"}]}}
修复
let dictionaries = [["firstName" : "John"], ["lastName": "Doe"], ["email": "[email protected]"], ["phone": "12345678901"]]
let ecData = EmergencyContactData(contact: dictionaries)
let elm = UserEmergencyContactRequest(userID: "userID", ecData: ecData)
if let data = try? JSONEncoder().encode(elm),
let string = String(data: data, encoding: .utf8) {
print(string)
}
{"userID":"userID","ecData":{"contact":[{"firstName":"John"},{"lastName":"Doe"},{"email":"[email protected]"},{"phone":"12345678901"}]}}