I have tried to create & send array of dictionary JSON format to Alamofire.
我试图创建并向Alamofire发送字典JSON格式的数组。
{
"attendance": [{
"attndid":"0",
"psngrtype": "student",
"date":currentdate,
"cuid": "25",
"enttid": "21",
}] }
Here, I am used tableview, In the above "cuid" & "enttid" I giving value from selectable tableview cell data. remaining are constant. I am passing one array of dictionary, if i select one tableview cell data. and two array, if i select two cells.etc.. and I am using below code and I get but getting issue create dictionary format. My code:
在这里,我使用tableview,在上面的“cuid”和“enttid”中,我从可选择的tableview单元格数据中给出了值。剩下的是不变的。如果我选择一个tableview单元格数据,我正在传递一个字典数组。和两个数组,如果我选择两个cells.etc ..我正在使用下面的代码我得到但得到问题创建字典格式。我的代码:
let arrayOfDictionaries: [[String:AnyObject]] =
[
["psngrtype":"student" as AnyObject,
"attndid": "0" as AnyObject ,
"cuid":stdpasngerid as AnyObject,
"enttid": entitID as AnyObject,
"attnddate":CurrentDate as AnyObject ]]
print(arrayOfDictionaries.toJSONString())
extension Collection where Iterator.Element == [String:AnyObject] {
func toJSONString(options: JSONSerialization.WritingOptions = .prettyPrinted) -> String {
if let arr = self as? [[String:AnyObject]],
let dat = try? JSONSerialization.data(withJSONObject: arr, options: options),
let str = String(data: dat, encoding: String.Encoding.utf8) {
return str
}
return "[]"
} }
output:
[{
"enttid" : "1",
"psngrtype" : "student",
"attnddate" : "10-26-2017",
"attndid" : "0",
"cuid" : "25" }]
And I want to add first one like json format.and add multiple array if i select more than one tableview cell. Please help i am stuck?
我想添加第一个像json格式。如果我选择多个tableview单元格,则添加多个数组。请帮我卡住?
2 个解决方案
#1
0
Simply you can do
你可以做到
var finalArray:[String:String] = [:]
finalArray["Attandance"] = arrayOfDictionaries.toJSONString()
#2
0
Object Mapping, you can use ObjectMapper library.
对象映射,可以使用ObjectMapper库。
Create object Attendance like
创建对象出席就好
class Attendance: Mappble {
var objects: [AttendancesAttributes] = []
init () { }
required init?(map:Map) { }
func mapping(map: Map){
objects <- map["attendance"]
}
}
Then creates your AttendancesAttributes object
然后创建AttendancesAttributes对象
class AttendancesAttributes: Mappable {
var id: String
....
func mapping(map: Map) {
//do the mapping with your dictionary
}
}
Then in your VC I guess you can do
然后在你的VC我想你可以做到
var attendance: Attendance = Attendance()
func (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//check if your object is or not in your array.
attendance.objects.append(yourTableViewFeeder[indexPath.row])
}
and finally in your API Client:
最后在您的API客户端中:
func sendAttendanceInformationsToServer(attendance: Attendance) {
Alamofire.request(url, method, parameters: attendance.toJSON(), encoding: JSONEncoding.default, headers: ["":""]).responseJSON (completionHandler: { //deal your response here
})
}
#1
0
Simply you can do
你可以做到
var finalArray:[String:String] = [:]
finalArray["Attandance"] = arrayOfDictionaries.toJSONString()
#2
0
Object Mapping, you can use ObjectMapper library.
对象映射,可以使用ObjectMapper库。
Create object Attendance like
创建对象出席就好
class Attendance: Mappble {
var objects: [AttendancesAttributes] = []
init () { }
required init?(map:Map) { }
func mapping(map: Map){
objects <- map["attendance"]
}
}
Then creates your AttendancesAttributes object
然后创建AttendancesAttributes对象
class AttendancesAttributes: Mappable {
var id: String
....
func mapping(map: Map) {
//do the mapping with your dictionary
}
}
Then in your VC I guess you can do
然后在你的VC我想你可以做到
var attendance: Attendance = Attendance()
func (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//check if your object is or not in your array.
attendance.objects.append(yourTableViewFeeder[indexPath.row])
}
and finally in your API Client:
最后在您的API客户端中:
func sendAttendanceInformationsToServer(attendance: Attendance) {
Alamofire.request(url, method, parameters: attendance.toJSON(), encoding: JSONEncoding.default, headers: ["":""]).responseJSON (completionHandler: { //deal your response here
})
}