gpt4 book ai didi

json - 使用 Freddy 反序列化字符串列表

转载 作者:可可西里 更新时间:2023-11-01 02:13:15 24 4
gpt4 key购买 nike

我正在 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 类型的数组。我该怎么做才能将这些映射到字符串?

最佳答案

事实上,Freddy 对象是 JSON 类型的——它的工作方式有点像 SwiftyJSON。

Freddy 有一个名为 decodedArray() 的 getter那会做你需要的。

例子:

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 数组而不是字符串数组,请使用您的原始代码并使用 Freddy 的 getString() 提取字符串。 setter/getter 和 flatMap :

// here .types is [JSON]
let strings = c.types.flatMap { try? $0.getString() }

关于json - 使用 Freddy 反序列化字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369657/

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