我在Swift中试验Freddy:
https://github.com/bignerdranch/Freddy
我正在尝试反序列化字符串列表。我的Json看起来像这样:
{
"types": ["A", "B", "C"],
}
这里是快速代码:
import Freddy
struct Config {
let types: [JSON]
}
extension Config: JSONDecodable {
public init(json: JSON) throws {
types = try json.getArray(at: "types")
}
}
这一切似乎都正确加载,但是我无法将字符串列表作为实际的字符串数组 - 它们是JSON类型的数组。我该怎么做才能将这些字母映射成字符串?
答案 0 :(得分:1)
实际上,Freddy对象属于JSON类型 - 它的工作方式与SwiftyJSON类似。
弗雷迪有一个名为decodedArray()
的吸气剂,可以满足你的需要。
示例:
struct Config {
let types: [String]
}
extension Config: JSONDecodable {
public init(json: JSON) throws {
types = try json.decodedArray(at: "types", type: String.self)
}
}
// instances
let json = try! JSON(data: data)
let c = try! Config(json: json)
//tests
print(c.types)
print(type(of: c.types))
打印:
["A", "B", "C"]
Array<String>
如果您希望将“类型”保留为JSON数组而不是String数组,请使用原始代码并使用Freddy的getString()
getter和flatMap
提取字符串:
// here .types is [JSON]
let strings = c.types.flatMap { try? $0.getString() }