use match for key path specific cases
cleaner impl
Introduce trait for evaluable data structures, and remove hard dependency on Json.

A implementation for Json is provided.