2013-02-12 79 views
4

我有一個JSON響應,並希望得到的值出:Clojure中獲取數據了JSON響應

(cheshire.core/parse-string (:body picList)) 

{"photoset" {"primary" "8455893107", "total" "1", "pages" 1, "perpage" 500, "page" 1, 
"per_page" 500, "photo" [{"id" "8455893107", "secret" "1a3236df06", "server" "8087", 
"farm" 9, "title" "IMG_0137", "isprimary" "1"}], "owner" "[email protected]", "id" 
"72157632724688181", "ownername" "clojureB5"}, "stat" "ok"} 

我怎樣才能像photoset->原發性或photoset->光電不同的值> ID ? 我嘗試了一些(map #(get % "photoset")...,但它的工作。

謝謝!

回答

9

我認爲你正在尋找clojure.core/get-in

(get-in your-parsed-json ["photoset" "primary"]) ;; "8455893107" 

(-> (get-in your-parsed-json ["photoset" "photo"]) 
    first 
    (get "id")) ;; "8455893107" 

(get-in your-parsed-json ["photoset" "photo" 0 "id"]) ;; "8455893107" 
+0

對,就是工作!我怎樣才能得到照片內的值? [「photoset」「photo」「id」])不工作... – Nico 2013-02-12 22:04:45

+0

看到我的第二個例子。 – Kyle 2013-02-12 22:05:25

+0

添加「id」將不起作用,因爲「photo」鍵指向「vector」。請注意第二個示例如何在該向量上調用「first」來獲取實際的地圖。 – Kyle 2013-02-12 22:06:20