Невозможно извлечь значение на основе ключей из файла .CLJ - PullRequest
0 голосов
/ 28 января 2020

Я получил JSON информацию из открытого API, используя

(def station-info (clj-http.client/get statinfo {:as :json}))

Я выплюнул эту информацию в файл .clj, определенный как si. Это содержимое выглядит так:

{:stations [{:station_id "1755", :name "Aker Brygge", :address "Aker Brygge",
             :lat 59.91118372188379, :lon 10.730034556850455, :capacity 33}
            {:station_id "1101", :name "Stortingstunellen", :address "Rådhusgata 34",
             :lat 59.91065301806209, :lon 10.737365277561025, :capacity 24}]}

Когда я вызываю функцию (map: station_id (: station si)), она возвращает пустой список "()".

Но если я определяю функцию с той же информацией в REPL, а затем использую ту же функцию, она работает!

Очень странно.


РЕДАКТИРОВАТЬ : Исправлено, превращая строку из файла в структуру данных:

(def si-data-structure (edn/read-string (slurp si)))

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Я исправил это, превратив строку из файла в структуру данных:

(def si-data-structure (edn/read-string (slurp si)))
0 голосов
/ 28 января 2020

Ваша функция правильная, поэтому ваши данные должны быть неверными. В частности, вы обязательно обнаружите, что (:stations si) также пусто. Посмотрите на переменную si и посмотрите, действительно ли она содержит то, что вы ожидаете: это карта? :stations один из его ключей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...