Есть ли возможность вызова 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?


person Alex Andrews    schedule 13.03.2017    source источник
comment
@OlegGordiichuk Этот вопрос касается исключительно фреймворка Swift на стороне сервера - Vapor. Пожалуйста, взгляните на описание еще раз, я внес небольшие изменения.   -  person Alex Andrews    schedule 13.03.2017


Ответы (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())
}
person Caleb Kleveter    schedule 13.03.2017