gpt4 book ai didi

ios - Objectmapper字典到Json swift? swift 2 -> swift 3

转载 作者:搜寻专家 更新时间:2023-11-01 06:18:04 26 4
gpt4 key购买 nike

我在将 Dictionary json 放入“MyOwnClass”时遇到问题。在 Swift 2 中,一切都很好。

我的 Json 结构:

[
{
"dataString1" : "value",
"dataInt1" : 3277
},
{
"dataString1" : "value",
... and so on

我在 Swift 2.x 中使用了 Objectmapper,但现在我想在 Swift 3 中转换所有内容。

我的旧代码:

do {
let jsonSerilization = try NSJSONSerialization.JSONObjectWithData(json, options: NSJSONReadingOptions.MutableContainers) as! NSArray

for jsonCount in 0..<jsonSerilization.count {
let singleData = Mapper<MyOwnClass>().map(jsonSerilization[jsonCount])
print(singleData.dataString1) //gotValue
}


} catch {
...
}

现在行 jsonSerilization[jsonCount] 是一个字典。在控制台中,我找到了我所有的值。

但我想在我的“MyOwnClass”结构中使用这本字典。我无法将字典转换为字符串。我试过 dictionary.description 但这个字符串的格式有误。

MyOwnClass Strucutre 并不特殊。

class MyOwnClass : Mappable {
var dataString1: String?
var dataInt1: Int?

required init?(map: Map){
mapping(map: map)
}

func mapping(map: Map) {
dataString1 <- map["dataString1"]
dataInt1 <- map["dataInt1"]
}
}

如何从“MyOwnClass”中的字典传输值?当然我可以手动完成,但我想要一个自动解决方案。

我在谷歌上搜索了很多将字典转换为 json 字符串,但没有任何帮助。谢谢

编辑好像ObjectMapper无法解析json的这种结构(State: 10/2016)如果我错了,请告诉我。

最佳答案

首先 - 一如既往 - 使用 Swift 原生集合类型。您将丢弃重要的类型信息。

其次,停止使用丑陋的 C 风格 for 循环。

第三,仅读取 JSON 时根本不需要可变容器。

let jsonSerialization = try JSONSerialization.jsonObject(with:json, options: []) as! [[String:Any]]

for item in jsonSerialization {
let singleData = Mapper<MyOwnClass>().map(JSON:item)
print(singleData.dataString1) //gotValue
}

编辑:

对于两个属性,您根本不需要 ObjectMapper。没有库代码就更少了

class MyOwnClass  {
var dataString1: String?
var dataInt1: Int?

init(JSON: [String:Any]) {
self.dataString1 = JSON["dataString1"] as? String
self.dataInt1 = JSON["dataInt1"] as? Int
}
}

并调用它

let singleData = MyOwnClass(JSON:item)

关于ios - Objectmapper字典到Json swift? swift 2 -> swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com