(defun uri-to-fluid-object (uri &key (method :get) parameters) (multiple-value-bind (body status headers) (drakma:http-request uri :method method :parameters parameters) (unless (= 200 status) (api-error "The request for ~a failed with status code ~a." uri status)) (json:with-decoder-simple-clos-semantics (let ((json:*json-symbols-package* nil)) (values (json:decode-json-from-string (babel:octets-to-string body)) status headers))))) * (uri-to-fluid-object "https://api.weather.gov/gridpoints/LOT/74,72/forecast") #<# {10059DF3F3}> 200 ((:SERVER . "nginx/1.16.1") (:CONTENT-TYPE . "application/geo+json") (:ACCESS-CONTROL-ALLOW-ORIGIN . "*") (:X-SERVER-ID . "vm-bldr-nids-apiapp6.ncep.noaa.gov") (:X-CORRELATION-ID . "a7a542e0-dd68-479f-a36a-647a9ee72588") (:X-REQUEST-ID . "a7a542e0-dd68-479f-a36a-647a9ee72588") (:CACHE-CONTROL . "public, max-age=900, s-maxage=120") (:EXPIRES . "Thu, 07 May 2020 02:36:36 GMT") (:DATE . "Thu, 07 May 2020 02:21:36 GMT") (:CONTENT-LENGTH . "11908") (:CONNECTION . "close") (:VARY . "Accept,Feature-Flags") (:STRICT-TRANSPORT-SECURITY . "max-age=31536000 ; includeSubDomains ; preload")) * (inspect *) The object is a STANDARD-OBJECT of type #. 0. WX: "unbound" 1. GEO: "unbound" 2. UNIT: "unbound" 3. @VOCAB: "unbound" 4. TYPE: "Feature" 5. COORDINATES: "unbound" 6. GEOMETRIES: "unbound" 7. VALUE: "unbound" 8. UNIT-CODE: "unbound" 9. NUMBER: "unbound" 10. NAME: "unbound" 11. START-TIME: "unbound" 12. END-TIME: "unbound" 13. IS-DAYTIME: "unbound" 14. TEMPERATURE: "unbound" 15. TEMPERATURE-UNIT: "unbound" 16. TEMPERATURE-TREND: "unbound" 17. WIND-SPEED: "unbound" 18. WIND-DIRECTION: "unbound" 19. ICON: "unbound" 20. SHORT-FORECAST: "unbound" 21. DETAILED-FORECAST: "unbound" 22. UPDATED: "unbound" 23. UNITS: "unbound" 24. FORECAST-GENERATOR: "unbound" 25. GENERATED-AT: "unbound" 26. UPDATE-TIME: "unbound" 27. VALID-TIMES: "unbound" 28. ELEVATION: "unbound" 29. PERIODS: "unbound" 30. @CONTEXT: "unbound" 31. GEOMETRY: "unbound" 32. PROPERTIES: "unbound" 33. WX: "unbound" 34. GEO: "unbound" 35. UNIT: "unbound" 36. @VOCAB: "unbound" 37. COORDINATES: "unbound" 38. GEOMETRIES: "unbound" 39. VALUE: "unbound" 40. UNIT-CODE: "unbound" 41. NAME: "unbound" 42. START-TIME: "unbound" 43. END-TIME: "unbound" 44. IS-DAYTIME: "unbound" 45. TEMPERATURE: "unbound" 46. TEMPERATURE-UNIT: "unbound" 47. TEMPERATURE-TREND: "unbound" 48. WIND-SPEED: "unbound" 49. WIND-DIRECTION: "unbound" 50. ICON: "unbound" 51. SHORT-FORECAST: "unbound" 52. DETAILED-FORECAST: "unbound" 53. UPDATED: "unbound" 54. UNITS: "unbound" 55. FORECAST-GENERATOR: "unbound" 56. GENERATED-AT: "unbound" 57. UPDATE-TIME: "unbound" 58. VALID-TIMES: "unbound" 59. ELEVATION: "unbound" 60. PERIODS: "unbound" 61. @CONTEXT: #("https://raw.githubusercontent.com/geojson/geojson-ld/master/contexts/geojson-base.jsonld" #<# {10059861D3}>) 62. GEOMETRY: #<# {100598C703}> 63. PROPERTIES: #<# {10059DEBD3}> > ;; It looks like all of the slots after #32 are duplicates. Is this a problem? ;; I believe this is causing problems further down the line - my application is hitting an ;; an error that the slot PROPERTIES is not bound in this fluid object. However, I cannot ;; cause cause the error from the REPL. > (slot-boundp sb-ext:*inspected* 'properties) T