Есть ли в любом случае JSON(node:) может быть вызван с типом [String: Any] в Vapor

У меня есть метод, который будет возвращать [String: Any] словарь, как показано ниже,

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

Мне нужно преобразовать этот объект в JSONчтобы я мог отправить его обратно клиенту как ResponseRepresentable объект.

Я использовал следующее для подготовки объекта JSON:

let jsonData = try JSON(node: getDetailDictionary())

Но это дает ошибку, говоря, что это не соответствует никаким доступным перегрузкам. Я не думаю [String:Any] тип не обрабатывается в JSON(node: ) Реализация метода. Есть ли способ решить эту проблему в Vapor?

1 ответ

Я смог заставить этот код работать, назначив тип всех значений 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())
}
Другие вопросы по тегам