gpt4 book ai didi

json - 将 JSON/NSDictionary 反序列化为 Swift 对象

转载 作者:行者123 更新时间:2023-11-30 12:12:28 25 4
gpt4 key购买 nike

有没有办法正确反序列化对 Swift 对象和响应的 JSON 响应。使用 DTO 作为固定 JSON API 的容器?

类似于http://james.newtonking.com/json的东西或类似 Java 的示例

User user = jsonResponse.readEntity(User.class);

其中 jsonResponse.toString() 类似于

{
"name": "myUser",
"email": "user@example.com",
"password": "passwordHash"
}

最佳答案

SWIFT 4 Update

<小时/>

由于您提供了一个非常简单的 JSON 对象,因此准备了处理该模型的代码。如果您需要更复杂的 JSON 模型,则需要改进此示例。

您的自定义对象

class Person : NSObject {
var name : String = ""
var email : String = ""
var password : String = ""

init(JSONString: String) {
super.init()

var error : NSError?
let JSONData = JSONString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

let JSONDictionary: Dictionary = NSJSONSerialization.JSONObjectWithData(JSONData, options: nil, error: &error) as NSDictionary

// Loop
for (key, value) in JSONDictionary {
let keyName = key as String
let keyValue: String = value as String

// If property exists
if (self.respondsToSelector(NSSelectorFromString(keyName))) {
self.setValue(keyValue, forKey: keyName)
}
}
// Or you can do it with using
// self.setValuesForKeysWithDictionary(JSONDictionary)
// instead of loop method above
}
}

这就是使用 JSON 字符串调用自定义类的方法。

override func viewDidLoad() {
super.viewDidLoad()
let jsonString = "{ \"name\":\"myUser\", \"email\":\"user@example.com\", \"password\":\"passwordHash\" }"
var aPerson : Person = Person(JSONString: jsonString)
println(aPerson.name) // Output is "myUser"
}

关于json - 将 JSON/NSDictionary 反序列化为 Swift 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883536/

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