无论如何,在Vapor中可以使用[String:Any]类型调用JSON(node :)

时间:2017-03-13 10:55:36

标签: swift vapor server-side-swift

我有一个方法,它会返回一个QueryVM字典,如下所示

[String: Any]

我需要将此对象转换为 func getDetailDictionary() -> [String: Any] { // demo code let followers = [1, 2, 3, 4, 5] return [ "name": "sample name", "followers": followers ] } ,以便我可以将其作为JSON对象发送回客户端。

我使用以下方法准备JSON对象:

ResponseRepresentable

但这给出了错误,告诉它不匹配任何可用的重载。我不认为let jsonData = try JSON(node: getDetailDictionary()) 方法实现中没有处理[String:Any]类型。我们有什么方法可以在Vapor中解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

通过将所有值的类型分配给Node,我能够使用此代码。如果你想在返回之前与字典中的数据进行交互,这可能不是你想要的,但我认为它会起作用。

func getDetailDictionary() -> Node {
    // demo code
    let followers: Node = [1, 2, 3, 4, 5]
    let dict: Node = [
        "name": "sample name",
        "followers": followers
    ]
    return dict
}

drop.get("test") { req in
    return JSON(getDetailDictionary())
}