   Example:
 
   attribute type | attribute name              | exploded name              |
-  standaed       | timestamp                   | timestamp                  |
+  standard       | timestamp                   | timestamp                  |
   nested item    | profile_data, bedroom_count | profile_data_bedroom_count |
   association    | storeys, first storey_type  | storeys_0_storey_type      |"
   (reduce

                               (parse-by-schema body-map profile-schema))
                             decoded-body)]
              ;; We need to assert a few things
              (if (not= (:entity_id body) entity_id)
                true                  ; it's malformed, game over
                [false {:body body}]))  ; it's not malformed, return the body now we've read it

     association-schema)))

(defn explode-associated-items [association items]
  "Explodes the elements of a (one to many) association, that is represented
  in the object coming from the datastore as a list of json encoded strings.
  Returns a list of vectors of two elements, the first being the attribute key,
  and the second the value.
  The keys are expanded like <association name>_<associated item index>_<attribute name>"
  (let [association-name   (name (:name    association))
        association-schema (:schema  association)]
    (apply concat
