如何从模型数据 Swift 创建 JSON 字符串? [关闭]

Posted

技术标签:

【中文标题】如何从模型数据 Swift 创建 JSON 字符串? [关闭]【英文标题】:How can I create JSON string from model data Swift? [closed] 【发布时间】:2020-06-06 15:48:20 【问题描述】:

如何从其他模型数据创建 JSON 字符串?

我希望从数据中创建 json 字符串,但没有成功。

我在数组中得到结果,然后我使用 For Loop 传递给 AppointmentDownloadModel 以创建 json。

如何传递数据 AppointmentDownloadModel 并创建 JSON 字符串。

数据接收模型:

struct ResponseData: Codable 

    let appointments : [Appointment]?



let decoder = JSONDecoder()
let response = try decoder.decode(ResponseData.self, from: result! as! Data)
self.appData = response.appointments
for everyApp in self.appData! 



想要将响应数据传递给这个模型:

struct AppointmentDownloadModel: Codable
    var appointmentModel: Appointment
    var progress: Int = 0
    var failedList: [Int: String] = [:]
    var isFinished: Bool = false

最后需要创建这个字符串:

"appointmentModel":"appointmentHour":"12:00","backgroundColorDark":"#556f7b","backgroundColorLight":"#cfd8dc","controlHour":"","date":"2020-06-01T12:00:00","heatingType":"b","id":15469622,"isProjectManual":false,"projectFirmName":"Miray Doğalgaz (Erhan Şahin)","projectName":"KÖKSAL ÇOŞKUN-+D1+D3+D5","projectType":"k","subTitle":"18137 902179436-18137-408352","failedResourceList":[],"isFinished":false,"progress":0

【问题讨论】:

@vikingosegundo 更新了预约模型。 为什么你的结构中的一切都是可选的?除非确实需要,否则不要将属性设为可选。 @JoakimDanielson 实际上数据来自后端,有时属性有值,有时没有。所以这就是我将它们设置为可选的原因。 这能回答你的问题吗? How to convert JSON to String in ios Swift? 【参考方案1】:

下面将解码 json 示例并创建新的 AppointmentDownloadModel 对象,然后将其编码为 Data(并转换为字符串)

var models = [AppointmentDownloadModel]()

let decoder = JSONDecoder()
do 
    let response = try decoder.decode(ResponseData.self, from: data)
    if let appointments = response.appointments 
        models = appointments.map  AppointmentDownloadModel(appointmentModel: $0)
    
 catch 
    print(error)


let encoder = JSONEncoder()
do 
    let modelData = try encoder.encode(models)
    let jsonString = String(data: modelData, encoding: .utf8)
    print(jsonString)
 catch 
    print(error)

【讨论】:

首先谢谢你。我已经实现了你的代码。它给了我print(jsonString)[\"isFinished\":false,\"appointmentModel\":\"projectName\":\"HASAN ARSLAN\",\"id\":15473662,\"subTitle\":\"52792 \",\"appointmentHour\":\"09:00\",\"projectDistrict\":\"GEBZE\",\"projectFirmName\":\"Dipos 4 Test Firması\",\"date\":\"2020-06-01T09:00:00\",\"backgroundColorLight\":\"#cfd8dc\",\"backgroundColorDark\":\"#556f7b\",\"heatingType\":\"b\",\"isProjectManual\":false,\"controlHour\":\"\",\"projectType\":\"i\",\"failedList\":,\"progress\":0] 在我的问题中,请检查Final need to create this string: 我需要这样我怎样才能做到这一点 你有那个字符串,只是当它被打印时你会看到所有的\

以上是关于如何从模型数据 Swift 创建 JSON 字符串? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 3 中为来自 web 服务的 Json 响应创建模型类

Swift下面字典(json)和模型的转换

如何将 json 数据从 alamofire 转换为 swift 对象

Swift 2:将 JSON 原生序列化为核心数据模型对象

Swift 3 - 无法弄清楚如何从 jsonArray 创建 json 对象

如何使用 swift 从 JSON 中提取数据