Gloss JSON:来自字符串

时间:2016-09-25 10:26:05

标签: json swift frameworks

我在Gloss中执行一项非常简单的任务时遇到了麻烦:从字符串构造模型实例。

Gloss定义了typealias JSON

public typealias JSON = [String : Any]

并在使用JSON协议反序列化JSON时需要Decodable的实例:

struct MyModel: Decodable {
    let item1: String?
    let item2: String?
    init?(json: JSON) {
        self.item1 = "item1" <~~ json
        self.item2 = "item2" <~~ json
    }
}

Gloss documentation解释了如何从类型[String : Any](又名JSON)的数组初始化模型对象,但没有提到如何从JSON-初始化模型对象字符串。

我找到了以下解决方案,但必须有一个更简单/更清洁的解决方案:

// Assume the following is in a function
let jsonString = "{\"item1\":\"some value\", \"item2\":\"another value\"}"
guard let data = jsonString.data(using: .utf8, allowLossyConversion: false)
    else { return nil }
guard let jsonData = try? JSONSerialization.jsonObject(with: data)
    else { return nil }
guard let json = jsonData as? JSON
    else { return nil }
return MyModel(json: json)

我是否遗漏了一些明显的东西,或者这是使光学解码成为JSON字符串的唯一方法吗?

0 个答案:

没有答案