2015-07-24 2 views
0

J'ai un simple fichier texte qui contient des chaînes de courrier électronique simples tels que:Clojure lecture d'un fichier et d'ajouter à l'objet JSON

[email protected] 
[email protected] 
[email protected] 
[email protected] 

Je veux être en mesure de retourner le contenu de ce fichier en tant que réponse JSON par mon REST api qui est une demande simple GET.

Y at-il un moyen que je peux lire le fichier ligne par ligne (je peux le faire) et ajouter à un objet JSON de sorte que je peux facilement rendre le contenu sur une page Web.

{ 
    "emails": [ 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]" 
    ] 
} 

Je veux que mon REST API pour ressembler à:

(GET "/emails" [] { 
    "emails": [ 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]" 
    ] 
}) 

mais je veux rendre le JSON sur demande que le fichier peut être modifié.

+0

Avez-vous défini l'objet JSON lui-même dans votre code Clojure? Je veux dire, en termes de cartes/vecteurs Clojure? –

Répondre

0

je suis venu avec la solution suivante en utilisant la Chesire library

(GET "/emails" [] 
    (generate-string {:emails (clojure.string/split-lines (slurp "/path/to/file"))} {:pretty true})) 
1

Vous pouvez utiliser les éléments suivants:

(GET "/emails" [] 
    (clojure.pprint/cl-format nil 
           "{\"emails\": [~{~S~^,~}]}" 
           (clojure.string/split-lines (slurp "/path/to/addresses.txt")))) 
+0

Cest presque ce qui m après, mais met le ',' entre guillemets ainsi que le résultat est: '{: emails [" [email protected] "", "" [email protected] "" , "...' –

+0

@ChrisEdwards mis à jour – Symfrog