Homoiconisity (code as a data structure) is one of the pillars of the Clojure language. It gives the extensibility and flexibility to the language. For example we have a power to easily extend Clojure language by creating macros since in this process we can use all available functions for the data structures.
In order to serialize a data structure we would use a pr-str function. As the result we have a string that can be written in the file for example.
When you work with EDN files using functions spit (to write to a file) and slurp (to read from the file) it is very convenient. Since slurp returns a string, we have to use read-string again to de-serialize data to the Clojure map.