Clojure 我如何遍历我的结果?

Clojure 我如何遍历我的结果?,clojure,Clojure,这就是我目前拥有的: {:total-pages 1, :total-results 1, :items [{:item-atributes {:title Tolkien Calendar 2017, :product-group Book, :manufacturer Harper Voyager, :author J. R. R. Tolkien}, :SalesRank 12016, :item-links [{:description Technical Details, :url

这就是我目前拥有的:

{:total-pages 1, :total-results 1, :items [{:item-atributes {:title Tolkien  Calendar 2017, :product-group Book, :manufacturer Harper Voyager, :author J. R.
R. Tolkien}, :SalesRank 12016, :item-links [{:description Technical Details, :url https://www.amazon.com/Tolkien-Calendar-2017-J-R/dp/tech-data/0062566938
%3FSubscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D215401-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0062566938} {:description Ad
d To Baby Registry, :url https://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D0062566938%26SubscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D215401
-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0062566938} {:description Add To Wedding Registry, :url https://www.amazon.com/gp/r
egistry/wedding/add-item.html%3Fasin.0%3D0062566938%26SubscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D215401-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D3
86001%26creativeASIN%3D0062566938} {:description Add To Wishlist, :url https://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D0062566938%26Su
bscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D215401-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0062566938} {:description Tell A
Friend, :url https://www.amazon.com/gp/pdp/taf/0062566938%3FSubscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D215401-20%26linkCode%3Dxm2%26camp%3D2025%26creati
ve%3D386001%26creativeASIN%3D0062566938} {:description All Customer Reviews, :url https://www.amazon.com/review/product/0062566938%3FSubscriptionId%3DAKIAI
6FVBZ4SCQ3VMGCQ%26tag%3D215401-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0062566938} {:description All Offers, :url https://ww
w.amazon.com/gp/offer-listing/0062566938%3FSubscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D215401-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26cre
ativeASIN%3D0062566938}], :detail-page-url https://www.amazon.com/Tolkien-Calendar-2017-J-R/dp/0062566938%3FSubscriptionId%3DAKIAI6FVBZ4SCQ3VMGCQ%26tag%3D2
15401-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0062566938, :asin 0062566938}]}

我从一个结果中得到了这个结果,并希望遍历它

不,那不是XML。您可以使用来遍历嵌套结构。

正如@jmargolistvt所说,您有一个Clojure数据结构(嵌套映射和数组),而不是xml

此外,下次请使用
prn
而不是
println
或类似工具进行打印,因为重要的是在字符串(如“Harper Voyager”)周围保留双引号字符

我将数据简化了一点,并得出以下结论:

(ns clj.core
  (:require 
    [tupelo.core :as t] 
    [clojure.pprint :as pp]
    )
  (:gen-class))
(t/refer-tupelo)

(def data
  {:total-pages 1, :total-results 1, :items 
   [ {:item-atributes 
          {:title "Tolkien  Calendar 2017", :product-group "Book", 
           :manufacturer "Harper Voyager" 
           :author "J. R.  R. Tolkien" }, :SalesRank 12016, :item-links [{:description "Technical Details" } ]
     } ] } )


(pp/pprint data)

(defn -main [& args]
)
这将产生:

~/clj > lein run    
{:total-pages 1,
 :total-results 1,
 :items
 [{:item-atributes
   {:title "Tolkien  Calendar 2017",
    :product-group "Book",
    :manufacturer "Harper Voyager",
    :author "J. R.  R. Tolkien"},
   :SalesRank 12016,
   :item-links [{:description "Technical Details"}]}]}
此时,您可以添加

(newline)
(doseq [item (data :items) ]
  (newline)
  (pp/pprint item)
  (newline)
  (spyx (item :SalesRank))
  (spyx (get-in item [:item-atributes :title])))
要获得:

{:item-atributes
 {:title "Tolkien  Calendar 2017",
  :product-group "Book",
  :manufacturer "Harper Voyager",
  :author "J. R.  R. Tolkien"},
 :SalesRank 12016,
 :item-links [{:description "Technical Details"}]}

(item :SalesRank) => 12016
(get-in item [:item-atributes :title]) => "Tolkien  Calendar 2017"
您的
项目.clj
必须包含此项才能使
(spyx…
部分正常工作:

:dependencies [
  [tupelo "0.9.9"]  ...

我试着做了(打印(进入(亚马逊搜索I)[:items:item-atributes:title])),但结果返回了零。amazon_搜索是获取嵌套结构的我的函数:items是一个数组。你能进那么多吗?我知道了。谢谢我使用@jmargolistvt的方法提取标题和salesrank。我大约有10本书,每本书的书名都是salesrank。如何根据salesrank对书籍进行排序,然后以表格格式整齐地打印出来?我现在有这种格式。。(println(登录(亚马逊搜索isbn)[:items 0:item atributes:title]))(println(登录(亚马逊搜索isbn)[:items 0:SalesRank]))