如何使用实体创建JSON以在Swift3 iOS中发布?
我刚接触Swift编程。我必须使用Swift3中的httpRequest向服务器发送以下JSON请求如何使用实体创建JSON以在Swift3 iOS中发布?,ios,json,post,swift3,httprequest,Ios,Json,Post,Swift3,Httprequest,我刚接触Swift编程。我必须使用Swift3中的httpRequest向服务器发送以下JSON请求 { "CompanyId": 162, "RollupYear": 2018, "UserId": 1609, "datarollup": [{ "Name": "Thank You Cards", "RollupYear": 2018, "DataRollupColumnID": 210,
{
"CompanyId": 162,
"RollupYear": 2018,
"UserId": 1609,
"datarollup": [{
"Name": "Thank You Cards",
"RollupYear": 2018,
"DataRollupColumnID": 210,
"CurrentValue": 520
},
{
"Name": "Prospecting Calls",
"RollupYear": 2018,
"DataRollupColumnID": 212,
"CurrentValue": 1300
}
],
"Seasonalitylist": [{
"CompanyPeriodId": 386,
"UserId": 1609,
"Seasonality": 25
},
{
"CompanyPeriodId": 387,
"UserId": 1609,
"Seasonality": 25
}
]
}
因此,为了以这种格式发送JSON,我创建了一个名为“RequestModel”的实体类:
import Foundation
class RequestModel {
var CompanyId: Int? = 0
var RollupYear: Int? = 0
var UserId: Int? = 0
var dataRollupArr = NSMutableArray()
var seasonalityArr = NSMutableArray()
}
class DataRollupModel {
var Name: String? = ""
var CurrentValue: Float? = 0.0
var RollupYear: Int? = 0
var DataRollupColumnID: Int? = 0
}
class SeasonalityModel {
var CompanyPeriodId: Int? = 0
var UserId: Int? = 0
var Seasonality: Int? = 0
}
我有我所有的值,有人能建议我如何将我的实体值添加到所需的JSON中吗
注:
以下是我向服务器发送JSON请求以进行登录的代码:
func login(email:String, password:String, completion:@escaping (NSDictionary) -> ()) {
if let url = NSURL(string: baseurl+"login") {
let request = NSMutableURLRequest( url: url as URL)
let signInDict = ["UserName":email,"Password":password]
print(signInDict)
let jsonData = try! JSONSerialization.data(withJSONObject: signInDict, options: JSONSerialization.WritingOptions.init(rawValue: 0))
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("732rguiqfw9237ryu4k2141", forHTTPHeaderField: "KEY")
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
do{
if let data = data,
let jsonString = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
, error == nil {
completion(jsonString)
} else {
print("error=\(error!.localizedDescription)")
let errorDict = ["error_status":true,"message":error!.localizedDescription] as [String : Any]
completion(errorDict as NSDictionary)
}
}
catch{
print("error=\(error.localizedDescription)")
let errorDict = ["error_status":true,"message":error.localizedDescription] as [String : Any]
completion(errorDict as NSDictionary)
}
}
task.resume()
}
}
首先,你们不必创建对象,若你们已经有了一个数据字典,你们可以直接将它转换成json 我建议您使用对象映射器,因为如果您仍然想使用对象模型,这是最简单的方法
继承可映射类的结构或对象它们具有将对象转换为jsonString或dictionary的直接功能首先,您不必创建对象,如果您已经有数据字典,您可以直接将其转换为json 我建议您使用对象映射器,因为如果您仍然想使用对象模型,这是最简单的方法
继承可映射类的结构或对象具有直接功能,可使用Swift 4Codable,#simple等将对象转换为jsonString或字典
class RequestModel: Codable {
var CompanyId: Int? = 0
var RollupYear: Int? = 0
var UserId: Int? = 0
var datarollup = [DataRollupModel]()
var Seasonalitylist = [SeasonalityModel]()
class DataRollupModel: Codable {
var Name: String? = ""
var currentValue: Float? = 0.0
var RollupYear: Int? = 0
var DataRollupColumnID: Int? = 0
var CurrentValue: Int? = 0
}
class SeasonalityModel: Codable {
var CompanyPeriodId: Int? = 0
var UserId: Int? = 0
var Seasonality: Int? = 0
}
}
extension Encodable {
func toJSONData() -> Data? {
return try? JSONEncoder().encode(self)
}
}
使用
使用Swift 4可编码,#简单类似
class RequestModel: Codable {
var CompanyId: Int? = 0
var RollupYear: Int? = 0
var UserId: Int? = 0
var datarollup = [DataRollupModel]()
var Seasonalitylist = [SeasonalityModel]()
class DataRollupModel: Codable {
var Name: String? = ""
var currentValue: Float? = 0.0
var RollupYear: Int? = 0
var DataRollupColumnID: Int? = 0
var CurrentValue: Int? = 0
}
class SeasonalityModel: Codable {
var CompanyPeriodId: Int? = 0
var UserId: Int? = 0
var Seasonality: Int? = 0
}
}
extension Encodable {
func toJSONData() -> Data? {
return try? JSONEncoder().encode(self)
}
}
使用
不要在SWIFT中使用NSStuff不要在SWIFT中使用NSStuff谢谢你的建议@Kunal,你能为我的模态和JSON分享一些代码吗?谢谢你的建议@Kunal,你能为我的模态和JSON分享一些代码吗?谢谢你的时间@SPatel请查看我的编辑,我想知道我有所有的值。您能告诉我如何将我的值传递给此模式吗?谢谢您的时间@SPatel请查看我的编辑,我想知道我对所有人都有值。你能告诉我如何将我的值传递给这个模型吗。