Untyped macros works on NimNode and happens at compile-time. Your JSON is run-time (compile-time constant is declared with `const`, `let` is for immutable data).
What exactly are you trying to accomplish ? Having your type be declared in a JSON instead of source code is probably wrong. If you need a JSON description of your types (for whatever reason), I would go the other way around and generate the JSON file at compile-time from the type.